Daily iOS
메모리·ARC

Task와 self 캡처

Swift Concurrency로 옮긴 뒤 팀에서 "Task { } 안에서도 [weak self]를 항상 써야 하나"로 논쟁이 붙었습니다. 언제 불필요하고, 어떤 Task에서는 꼭 필요한가요?

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

Task는 self가 Task를 붙들고 있지 않으면 사이클이 아니라 작업 동안만 수명을 연장하므로 weak가 필수는 아니다. 장기 실행·무한 스트림 Task는 self의 수명을 늘려 화면이 닫혀도 살아 있으니 weak self가 필요하고, Task 핸들을 self의 프로퍼티로 보관하면 진짜 사이클이라 반드시 weak다.

받은 질문 공유