[메모리]Swift의 Automatic Reference Counting(ARC)에 대하여

권승용·2021년 7월 29일
0

Swift 프로그래밍

목록 보기
1/7
post-thumbnail

Swift는 ARC를 사용해 메모리를 관리한다.

Reference counting은 오직 class의 인스턴스에만 적용된다. reference type이 아니라 value type인 structure와 enumeration은 reference를 통해 저장되고 전달되지 않기 때문이다.

ARC가 작동하는 방법

class의 새로운 인스턴스를 생성할 때 마다, ARC는 그 인스턴스에 관한 정보를 저장하기 위한 메모리를 할당한다. 이 메모리는 인스턴스의 타입에 대한 정보 그리고 인스턴스와 관련된 property등을 저장하게 된다.

인스턴스가 더 이상 필요하지 않게 되면, ARC는 그 인스턴스에게 할당된 메모리를 해제한다. 만약 ARC가 계속 사용중인 인스턴스의 메모리를 해제하게 된다면 그 인스턴스에 속한 프로퍼티나 메소드에 더 이상 접근하지 못하게 된다. 이 상태에서 인스턴스에 접근하려 하면 높은 확률로 앱이 크래시가 날 것이다.

인스턴스가 사용중일 때 메모리에서 해제되는 대참사를 막기 위해서 ARC는 각 class 인스턴스를 참조하는 property, constant, variable 등이 몇 개가 있는지 추적한다. 단 하나라도 인스턴스를 참조하는 것이 있다면 ARC는 인스턴스를 메모리에서 해제하지 않을 것이다.

class 인스턴스를 property, constant 또는 variable에 할당할 때, 그 property, constant, variable은 인스턴스에 'strong reference'를 만들게 된다. 이 strong reference가 남아있는 한 인스턴스는 메모리에서 해제될 수 없다.

참조 및 출처 : https://docs.swift.org/swift-book/LanguageGuide/AutomaticReferenceCounting.html

profile
ios 개발자 지망생 입니다!

0개의 댓글