Daily iOS
메모리·ARC

클로저 캡처 순환 참조

메시지 앱의 ViewModel이 프로퍼티로 오래 보관하는 completion 클로저 안에서 self.messages를 갱신합니다. 어떤 참조 그래프 때문에 retain cycle이 생깁니까?

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

ViewModel이 클로저를 프로퍼티로 strong하게 들고, 클로저는 본문에서 self.messages를 쓰는 순간 self를 strong으로 캡처하므로 ViewModel에서 클로저로, 클로저에서 다시 ViewModel로 향하는 화살표 두 개가 고리를 이루어 어느 쪽도 해제되지 못한다.

받은 질문 공유