본문 바로가기
iOS

[iOS] ARC(Automatic Reference Counting)

by seongminmon 2024. 8. 12.

ARC란?

Swift에서의 메모리 관리 방법

객체의 참조 횟수(reference count)를 계산하여, 참조 횟수가 0이되면 메모리를 해제하는 방식

 

ARC에서 발생할 수 있는 문제점

서로 다른 객체들이 순환 형태로 참조하고 있는 경우 reference count가 0이 되지 않아 메모리에서 해제되지 않는 순환 참조 문제가 발생할 수 있음

 

순환 참조 문제 해결법

reference count를 증가시키지 않도록 weak나 unowned 키워드를 통해 해결할 수 있음

 

weak와 unowned의 차이점

weak는 객체가 메모리에서 내려간 경우 옵셔널 타입으로 선언되어 nil값을 가짐

unowned는 참조하는 객체가 항상 존재한다고 가정하여, 참조하는 객체가 메모리에서 해제되면 런타임 에러가 발생할 수 있음

 

ARC와 GC(Garbage Collection) 비교

ARC는 컴파일 시점에, GC는 런타임에 실행됨

GC는 런타임 시점에 실행되기 때문에 ARC에 비해 오버헤드가 높음

GC는 런타임에 주기적으로 메모리를 검사하여 순환 참조를 탐색하고 메모리에서 해제할 수 있어 순환 참조 문제가 발생하지 않음

'iOS' 카테고리의 다른 글

[iOS] COW(Copy-on-Write)  (0) 2024.08.28
[iOS] Code Base로 시작하기  (0) 2024.08.19
[iOS] Result Type으로 네트워크 통신 개선해보기  (0) 2024.08.05
[iOS] 싱글톤 패턴  (0) 2024.07.30
[iOS] Dispatch Queue  (0) 2024.07.18