[iOS] ARC (Automatic Reference Counting, 자동 메모리 관리)

kimdocs...📄·2021년 8월 1일
0

iOS

목록 보기
19/22
post-thumbnail

ARC란?

  • Swift에서 지원하는 메모리 관리 모델
  • Automatic Reference Counting
  • 컴파일러가 알아서 메모리 관리 코드를 삽입해줌
  • 코드의 양은 적어지고 프로그램의 안정성을 높일 수 있게 되었다.

Reference Counting

  • 인스턴스는 하나 이상의 소유자가 있는 경우 메모리에 유지된다.
  • 소유자가 없다면 그 즉시 메모리에서 제거된다.
  • 제거 시점을 파악하기 위해 소유자 수를 정하는 데 이것을 참조 카운트 (Reference Count)라고 한다.
  • 참조 카운트가 1이상이면 메모리에 유지되고 0이 되면 메모리에서 제거된다.

MRR란?

  • ARC가 등장하기 전, 개발자는 모든 객체의 레퍼런스 카운트를 직접관리해야 했다.
  • Apple에서는 이 방식을 MRR(Manual Retain Release)라고 하며 말 그대로 Retain과 Release를 직접 호출하는 방식이다.

Retain

  • 객체가 다른 객체를 참조하겠다.
  • NSObject 클래스의 함수이며, 객체의 레퍼런스 카운트를 증가시킨다.
  • 객체가 메모리에서 해제되지 않도록 하기 위해 이 함수를 호출하여 레퍼런스 카운트를 증가시킬 수 있다.

Release

  • 객체가 다른 객체의 소유권을 놓아 주겠다.
  • NSObject 클래스의 함수이며 객체의 레퍼런스 카운트를 감소시킨다.
  • 객체를 더 이상 사용하지 않거나, 메모리에서 해제하고 싶을 떄 이 함수를 호출하여 레퍼런스 카운트를 감소시킬 수 있다.

Retain Count

  • 나라는 객체가 다른 객체에 의해 참조가 되거나 소유가 된 횟수 = ARC에서의 Reference Count
profile
👩‍🌾 GitHub: ezidayzi / 📂 Contact: ezidayzi@gmail.com

0개의 댓글