[swift] ARC와 메모리 관리

애플이 개발한 스위프트 프로그래밍 언어는 ARC (Automatic Reference Counting)을 통해 메모리를 자동으로 관리합니다.

ARC란 무엇인가요?

ARC는 스위프트에서 사용하는 메모리 관리 모델로, 객체에 대한 참조 횟수를 추적하여 해당 객체를 메모리에서 해제하는 방식을 말합니다. 참조 횟수는 해당 객체를 참조하는 변수나 상수의 수에 따라 증가하고 감소합니다. 따라서 객채를 더 이상 사용하지 않을 때, 참조 횟수가 0이 되면 자동으로 메모리에서 제거됩니다.

간단한 ARC 예제

다음은 ARC를 이해하는데 도움이 되는 간단한 예제입니다.

class Person {
    let 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

// 출력: Alice이(가) 메모리에서 해제되었습니다.

위 예제에서 Person 객체를 생성하고 reference1, reference2, reference3 모두가 이를 참조합니다. 이후 reference1reference2nil로 설정하여 더는 해당 객체를 참조하지 않게 됩니다. 이로 인해 참조 횟수가 0이 되어, 해당 Person 객체는 메모리에서 자동으로 제거됩니다.

ARC는 메모리 누수를 방지하고 프로그래머가 메모리 관리에 신경쓰지 않고도 안전하게 코드를 작성할 수 있도록 도와줍니다. 그러나 순환 참조와 같은 특정 상황에서는 유의해야 합니다.

ARC와 메모리 관리에 대해 더 알고 싶다면 여기를 참고하세요.


이상으로 ARC와 메모리 관리에 대해 알아보았습니다. 부족한 부분이 있다면 언제든지 알려주세요!