[swift] 자동 참조 계산(ARC)

자동 참조 계산(ARC)은 Swift에서 메모리 관리를 자동으로 처리하는 기법입니다. 이 기법을 통해 메모리 누수를 방지하고 객체가 더는 필요하지 않을 때 메모리를 해제할 수 있습니다.

ARC의 작동 방식

ARC는 객체가 다른 객체에 의해 참조될 때마다 카운팅을 하며, 해당 객체를 참조하는 것이 없어질 때 카운팅을 감소시킵니다. 참조 카운트가 0이 되면 자동으로 메모리에서 해당 객체를 해제합니다.

class Person {
    var name: String
    init(name: String) {
        self.name = name
        print("\(name)이 메모리에 적재됨")
    }
    deinit {
        print("\(name)이 메모리에서 해제됨")
    }
}

var reference1: Person?
var reference2: Person?
var reference3: Person?

reference1 = Person(name: "Alice")
reference2 = reference1
reference3 = reference1

reference1 = nil
reference2 = nil
reference3 = nil
// "Alice이 메모리에서 해제됨"이 출력됨

강한 참조 순환 문제

강한 참조 순환 문제란 서로를 강하게 참조하는 두 객체가 서로를 메모리에 남게 만드는 문제입니다. 이를 해결하기 위해 Swift에서는 약한 참조미소유 참조를 제공합니다.

ARC를 사용할 때 강한 참조 순환 문제를 방지하기 위해 객체 간의 관계를 명확히 파악하고, 강한 참조 순환을 방지하기 위해 weak나 unowned 키워드를 사용해야 합니다.

ARC는 Swift의 강력한 기능 중 하나이며, 올바르게 사용하면 메모리 관리에 대한 걱정을 덜 수 있습니다.

참고 자료: Apple 공식 문서