메모리·ARC
저장된 클로저와 self 수명
UIKit ViewController가 프로퍼티에 저장해 둔 업로드 완료 Block이 ViewController의 라벨을 바꿉니다. 업로드가 끝난 뒤에도 프로퍼티에 남아 있는 이 클로저와 self 사이의 고리를 어떻게 끊겠습니까?
면접관은 이 답을 어떻게 들을까요? 넘어갈지, 더 물어볼지, 떨어뜨릴지 알려 주고, 걸리는 문장은 콕 집어 줘요. 점수는 그대로예요.
UIKit ViewController가 프로퍼티에 저장해 둔 업로드 완료 Block이 ViewController의 라벨을 바꿉니다. 업로드가 끝난 뒤에도 프로퍼티에 남아 있는 이 클로저와 self 사이의 고리를 어떻게 끊겠습니까?
클로저가 실행된 직후 그 프로퍼티에 nil을 대입해 ViewController에서 클로저로 가는 화살표를 없애는 것이 가장 확실하고, 실행이 안 될 수도 있는 경로(실패, 화면 이탈)를 대비해 클로저 쪽에서는 [weak self]로 반대 화살표도 약하게 잡아 두 겹으로 막는다.
메모리·ARC주관식기초
retain cycle이 생기는 구체적인 코드 예시를 하나 들고 고쳐 보세요.
#closure #retain-cycle #lifetime
메모리·ARC객관식기초
다음 두 코드 중 순환 참조가 생기는 것은? …
#closure #retain-cycle
메모리·ARC객관식기초
다음 중 (별도 조치가 없을 때) 순환 참조 또는 영구 누수가 생기는 경우를 모두 고르세요.
#closure #retain-cycle
메모리·ARC주관식심화
UITableView 셀에서 이미지를 비동기로 싣는 아래 코드는 가끔 크래시합니다. 어떤 조건에서, 왜 크래시하나요? …
#closure #lifetime