ARC 란 ?
참조된 횟수를 추적해 더이상 참조되지 않는 인스턴스를 메모리에서 해제해 주는 것이다.
ARC는 특정 클래스 객체를 참조하는 변수, 상수, 프로퍼티들의 갯수를 카운팅한다.
- 참조 메모리 관리를 자동으로 해주는 기능을 뜻한다.
- 인스턴스가 참조되거나 참조해제될 때 횟수를 카운팅하고, 횟수가 0이 되면 인스턴스를 메모리에서 해제하는 방식으로 수행된다.
Heap 은 class,closure 등의 참조형 자료들이 머무르는 공간, 개발자가 동적으로 할당하는 메모리 공간 -> 관리 필요
관리를 위해서는 Heap 영역에 참조형 자료들이 얼마나 참조되고 있는지 카운팅하고 이에 따라 메모리를 할당 및 제거하면 된다.
이것을 자동으로 해주는게 ARC 다.
특정 객체에 "적어도" 하나라도 참조변수가 존재한다면 ARC에서는 메모리 해제를 발생하지 않는다.
반대로, 활성화된 참조변수가 존재하지 않는다면 ARC는 특정 객체를 메모리로부터 "해제"시킨다.
retain, release 의 호출을 통해 메모리 관리를 수행하는 것이다.
retain
- 객체의 reference count 를 증가 시킨다.
객체가 메모리에서 해제되지 않도록 이 함수를 호출하여 카운트를 증가시킨다.
release
- 객체의 reference count 를 감소시킨다.
객체를 더이상 필요로 하지 않을 때 이 함수를 호출하여 카운트를 감소시키는 것이다.
class Person {
var name: String
init(name: String) {
self.name = name
}
}
let prettyPerson = Person(name: "minsol")
let prettyPerson2 = prettyPerson
referenceCount -> 2 인 상태이다.
'iOS' 카테고리의 다른 글
iOS - missing package product 'moya' (0) | 2024.08.01 |
---|---|
iOS - 프레임워크와 라이브러리 차이점 (0) | 2024.08.01 |
SwiftUI - @Environment(/.presentationMode) 모달창 dismiss (0) | 2024.07.29 |
SwiftUI - @ObservableObject ,@Published, @ObservedObject (2) | 2024.07.16 |
SwifUI - @ObservedObject, @StateObject (MVVM 패턴) (0) | 2024.06.29 |
댓글