Daily iOS
메모리·ARC

weak 참조의 런타임 구현

"weak가 strong보다 느리다"는 말이 왜 사실인지 Swift 런타임의 참조 카운트 구조(인라인 refcount, side table)로 설명해 주세요.

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

객체 헤더의 인라인 refcount에는 strong·unowned 카운트만 있고, weak 참조가 처음 생기면 side table을 할당해 카운트를 옮긴다. 이후 weak 변수는 객체가 아니라 side table을 가리켜 한 단계 간접 참조를 거치고, 그 객체의 strong 연산까지 느려진다.

받은 질문 공유