[swift] ARC 개요
스위프트에서는 ARC (Automatic Reference Counting) 라고 불리는 자동 참조 계수 기능을 통해 메모리 관리를 지원합니다.
ARC가 하는 일
ARC는 인스턴스에 대한 참조 횟수를 추적하여 인스턴스가 더 이상 필요하지 않을 때 메모리에서 자동으로 해제합니다.
예를 들어, 다음과 같이 변수에 인스턴스를 할당할 때, 해당 인스턴스의 참조 횟수가 증가합니다.
var obj1: MyClass? = MyClass()
또한, 다른 변수에 해당 인스턴스를 할당하거나 변수가 스코프를 벗어날 때 참조 횟수가 감소합니다.
강한 참조 순환 문제
ARC는 강한 참조 순환 문제 (Strong Reference Cycles) 를 방지하기 위해 weak나 unowned 참조를 사용할 수 있도록 합니다.
class Person {
var name: String
weak var apartment: Apartment?
init(name: String) {
self.name = name
}
}
class Apartment {
let unit: String
var tenant: Person?
init(unit: String) {
self.unit = unit
}
}
위의 예시에서 Person
클래스와 Apartment
클래스가 서로를 강한 참조하고 있기 때문에 메모리 누수가 발생할 수 있습니다. 따라서 weak
키워드를 사용하여 순환 참조를 방지합니다.
ARC는 스위프트에서 메모리 관리의 부담을 덜어주며, 순환 참조 문제를 방지하여 안정성을 높이는 데 중요한 역할을 합니다.
더 자세한 내용은 스위프트 공식 문서를 참고하세요.