• 카테고리

    질문 & 답변
  • 세부 분야

    모바일 앱 개발

  • 해결 여부

    미해결

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

23.07.21 09:23 작성 조회수 202

0

안녕하세요.

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

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

답변 1

답변을 작성해보세요.

1

안녕하세요

 

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

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

 

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