ARC 1탄 - TIL44

future0159 2월 12일 AM 10:07 8 1
future0159 Profile Image Level 9
1

ARC가 무엇인가?

Swift에서는, 사용자 앱의 메모리 사용을 추적하고 관리할 때 Automatic Reference Counting (ARC)라는 것을 사용한다.
대부분 메모리 사용을 사용자가 직접 관리해야 하는 C와 다르게,
더이상 메모리에서 사용하지 않는다고 판단했을 때 자동으로 ARC를 통해 클래스 "객체"를 메모리로부터 Free 시킨다.

2. ARC의 판단기준

특정 객체가 더이상 사용되지 않는 다는 것을 ARC는 어떻게 판단할까?
ARC는 특정 클래스 객체를 참조하는 변수, 상수, 프로퍼티들의 갯수를 카운팅한다.
특정 객체에 "적어도" 하나라도 참조변수가 존재한다면 ARC에서는 메모리 해제를 발생하지 않는다.
반대로, 활성화된 참조변수가 존재하지 않는다면 ARC는 특정 객체를 메모리로부터 "해제"시킵니다.
쉽게 말해, 특정 객체 하나가 존재하고 이를 여러곳의 변수가 참조할때 한 객체에 대한 count가 증가한다고 생각하시면 됩니다.
밑의 간단한 예제를 살펴볼까요?

class SomeValue {
    var name: String
    init(name: String) {
        self.name = name
    }
}
let someValue = SomeValue(name: "팀쿡") // reference count => 1
let someValue2 = someValue // reference count => 2

팀쿡이라는 SomeValue의 클래스 객체는 someValue, someValue2 두 variable에서 참조하고 있습니다.
따라서 팀쿡 객체의 reference Count는 2입니다.

댓글