Daily iOS
동시성

Swift 6 빌드와 싱글톤 경쟁 상태

과제로 제출한 앱은 static let shared로 만든 싱글톤 ImageCache(내부에 var storage: [URL: UIImage])를 여러 화면이 백그라운드 큐에서 읽고 씁니다. 면접관이 묻습니다. "이 프로젝트를 Swift 6 언어 모드로 빌드하면 어떤 일이 생길까요?"

면접관은 이 답을 어떻게 들을까요? 넘어갈지, 더 물어볼지, 떨어뜨릴지 알려 주고, 걸리는 문장은 콕 집어 줘요. 점수는 그대로예요.
짧은 답 보기

Swift 6 strict concurrency는 non-Sendable 타입의 static let shared를 'not concurrency-safe' 컴파일 오류로 막는다. 가변 딕셔너리를 가진 class는 Sendable이 아니므로 빌드가 깨지고, 잠재적 데이터 레이스가 컴파일 타임에 드러나는 것이다.

받은 질문 공유