Daily iOS
메모리·ARC

저장된 클로저와 self 수명

UIKit ViewController가 프로퍼티에 저장해 둔 업로드 완료 Block이 ViewController의 라벨을 바꿉니다. 업로드가 끝난 뒤에도 프로퍼티에 남아 있는 이 클로저와 self 사이의 고리를 어떻게 끊겠습니까?

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

클로저가 실행된 직후 그 프로퍼티에 nil을 대입해 ViewController에서 클로저로 가는 화살표를 없애는 것이 가장 확실하고, 실행이 안 될 수도 있는 경로(실패, 화면 이탈)를 대비해 클로저 쪽에서는 [weak self]로 반대 화살표도 약하게 잡아 두 겹으로 막는다.

받은 질문 공유