샘성의 iOS 개발 일지

Retain Count 방식에 대해 설명하시오. 본문

iOS/면접

Retain Count 방식에 대해 설명하시오.

SamusesApple 2023. 6. 15. 22:43
728x90

1. Retain Count란?

  힙(Heap) 영역의 RC(Reference Count)를 세어본 후, RC가 0인 순간, 컴파일 할 때 메모리 해제시점을 결정하는 방식

  • 데이터 영역 : 공통으로 공유하는 영역으로, 앱이 실행되는 동안은 불변한다. (전역변수, 타입 변수(static))
    - 관리 필요 X

  • 스택 영역:  함수 실행을 위한 임시적 공간이다. 따라서 실행이 완료되면 FIFO(선입선출) 방식으로 알아서 메모리에서 사라지게 됨
    - 관리 필요 X

  • 힙 영역:  비교적 긴 시간동안 갖고있게 되는 데이터가 저장된다. 개발자가 관리해야지만 메모리에서 할당 해제가 됨
    이 때, 개발자가 관리해야 할 것이 바로 Retain Count (RC)이다.

2. Retain Count의 동작 방식

 2-1)  Heap 영역에 저장되는 데이터

  • class 인스턴스
  • 클로저
  • 중첩함수 (클로저 형식으로 저장됨)

 2-2)  Retain Count가 올라가는 경우

   힙 영역에 저장된 인스턴스의 참조값을 사용하는 경우 RC가 올라간다.

스택 영역에서 사용하는 경우는 상관이 없다(어차피 스택 영역은 사라지기 때문에 RC가 잠깐만 올라가고 다시 0이 됨)
하지만, 힙 영역에 존재하는 2개 이상의 인스턴스가 서로를 가리킬 경우 메모리에서 해제 되지 않아 메모리 누수가 발생할 수 있다.

728x90