안녕하세요.
맥파이입니다.
ARC에 대해서 학습해볼 예정입니다.
ARC(Automatic Reference Counting)
ARC(Automatic Reference Counting)는 Swift의 메모리 관리 방식 중 하나로, 객체에 대한 참조 카운트를 추적하여 객체가 사용되는 동안에는 메모리에 유지되도록 하는 것입니다.
class Person {
var name: String
init(name: String) {
self.name = name
}
deinit {
print("\(name) is being deallocated")
}
}
var someone: Person?
someone = Person(name: "John")
someone = nil // Prints "John is being deallocated"
클래스 Person은 name 속성을 갖고 있습니다. Person 클래스를 생성하고, someone이라는 변수에 참조를 할당합니다.
someone 변수를 nil로 초기화합니다.
Person 객체의 참조 카운트가 1에서 0으로 감소합니다.
그리고 더 이상 참조되지 않으므로, 해당 객체는 메모리에서 해제됩니다.
Person 클래스의 인스턴스인 John은 someone 변수에 대한 참조를 가지고 있습니다.
someone 변수가 nil로 설정될 때, John 객체의 참조 카운트는 1에서 0으로 감소합니다.
이로 인해 John 객체의 deinit 메소드가 호출되며, "John is being deallocated"가 출력됩니다.
참조카운트
Swift에서는 ARC(Automatic Reference Counting)를 사용하여 메모리 관리를 합니다.
ARC는 객체에 대한 참조 카운트를 추적하여 객체가 사용되는 동안에는 메모리에 유지되도록 하는 것입니다.
객체가 생성될 때, 참조 카운트는 1로 초기화됩니다. 그리고 다른 변수나 상수에 할당되거나 컬렉션에 추가될 때마다 참조 카운트가 1 증가합니다. 참조가 더 이상 필요하지 않은 경우, 해당 변수나 상수를 nil로 설정하거나, 컬렉션에서 삭제하거나, 참조하는 객체가 범위를 벗어나면 참조 카운트가 1 감소합니다.
만약 객체의 참조 카운트가 0이 되면, 해당 객체는 더 이상 사용되지 않는 것으로 판단되어 메모리에서 해제됩니다. 이 때, 해당 객체의 deinit 메소드가 호출되며 객체가 메모리에서 해제되는 시점에 필요한 작업들을 수행할 수 있습니다.
ARC는 Swift에서 기본적으로 사용되는 메모리 관리 방식입니다.
ARC는 Swift에서 메모리 관리를 자동화하여 개발자가 수동으로 메모리를 할당하거나 해제하는 일을 최소화하도록 도와주는 역할을 합니다.
몰라도 되지만 알면 언젠가는 도움이 되는 내용입니다.
그럼 또 만나요!!
'개발 관련 > iOS SWIFT' 카테고리의 다른 글
[Swift] UIKit소스에서 SwiftUI 화면 사용하기 (0) | 2023.08.23 |
---|---|
[Swift] 고차함수 (map, filter, reduce) 1회차 (0) | 2023.04.11 |
[Swift] Generic에 대해 공부해봅시다. (0) | 2023.04.09 |
[Swift] typealias와 associatedtype의 차이점 (0) | 2023.04.07 |
[Swift] enum은 무엇인가? (0) | 2023.04.06 |