인프런 커뮤니티 질문&답변

seculite님의 프로필 이미지
seculite

작성한 질문수

성공적인 진짜 iOS 개발자 되기 [기초부터 실무까지]

closure 3 에서 weak로 준 부분이 궁금합니다.

작성

·

242

0

안녕하세요.

레퍼런스 변수의 경우 레퍼런스 카운터에 의해 메모리에서 해제 되는 시점을 확인 한다고 이해 했는데요.
캡쳐 리스트에서 weak self 를 사용 할 경우 레퍼런스 카운터가 증가하지 않게 되고
그래서 클로저 변수를 메모리에서 해제 하지 않아도 결국 클래스의 deinit이 호출되는것을 확인 하였습니다.

그렇다면 weak를 사용해 캡쳐 된 레퍼런스 변수들은 메모리에 그대로 남아 있는건가요?
아니면 클래스인스턴스에서 레퍼런스 카운터가 0이 될 때 메모리에서 weak로 참조된 변수들도 같이 해제 되는건지 궁금합니다.

답변 1

1

iOS Developer - 이정님의 프로필 이미지
iOS Developer - 이정
지식공유자

안녕하세요

 

레퍼런스 카운트0이 되면 해당 레퍼런스는 메모리 해제 됩니다.

그럼 당연히 그 레퍼런스를 참조하고 있던 변수들도 다 메모리에서 해제됩니다.

 

참고로 이 내용은 ARC강의로 따로 올려놨으니 보시면 바로 이해가 되실겁니다.

 

seculite님의 프로필 이미지
seculite

작성한 질문수

질문하기