iOS/면접
ARC란 무엇인지 설명하시오.
SamusesApple
2023. 6. 15. 22:13
728x90
1. Reference Counting(RC)이란?
: 힙(Heap) 영역의 RC(Reference Count - 참조 숫자)를 세어본 후, RC(참조 숫자)가 0인 순간, 메모리 관리 혹은 컴파일 할 때 메모리 해제시점을 결정하는 방식
- RC 모델 방식을 개발자가 직접 수동으로(Manual) 구현하여 메모리 관리를 하는 모델
- Objective-C에서 사용하는 방식
- 현재는 MRC, ARC 방식 둘 중 선택 가능
- 수동으로 RC를 개발자가 구현하여 메모리 관리가 필연적인 모델
- 메모리를 관리하기 위한 변수 var refCount: Int 존재
- retain() : RC(참조 숫자)를 +1 하는 코드 → 메모리 할당**
- release() RC(참조 숫자)를 -1 하는 코드 → 메모리 해제**
⇒ 할당과 해제 둘다 구현해야 하기에 개발자의 실수 가능성 다분했음
2. Automatic Reference Counting(ARC)
: Xcode에서 컴파일 할 때 컴파일러가 자동으로 RC 모델 방식으로 메모리를 관리하는 방식 (수동 관리 불가능).
⇒ 컴파일러가 참조 숫자를 잘못 인식하지 않도록 유의해야함
- Swift에서 사용하는 방식
- 현재 Objective-C에서도 ARC 모델 사용 가능
- retain()와 release() 코드를 컴파일러가 자동으로 심어줘서 메모리 정리
- 컴파일 과정에서 오류 발생 가능성 있기에 개발자는 ARC 모델 이해하고 메모리 정리해야함
- 메모리가 할당되면 retain() 키워드 컴파일러가 구현 → RC +1
- 메모리가 해제되면 (e.g. nil 할당) release() 키워드 컴파일러가 구현 → RC -1
- ⇒ retain()과 release()를 개발자가 수동으로 구현하여 관리 불가능
* ARC모델의 기반 : 소유 정책과 참조 카운팅
- 소유 정책: 인스턴스는 하나 이상의 소유자가 있는 경우 메모리에 유지됨 ⇒ 소유자가 없으면 메모리에서 제거
- 참조 카운팅: 인스턴스(나)를 가리키는 소유자 수를 카운팅
728x90