이전 Objective-C에서는
retain
,release
같은 함수들로 직접 Heap 메모리에 할당/해제를 했다.
retain
, release
코드를 자동으로 삽입한다.📚 Swift Documentations - Automatic Reference Counting
Swift uses Automatic Reference Counting (ARC) to track and manage your app’s memory usage. In most cases, this means that memory management “just works” in Swift, and you don’t need to think about memory management yourself. ARC automatically frees up the memory used by class instances when those instances are no longer needed.
class Human {
let name: String
let age: Int
init(name: String, age: Int) {
self.name = name
self.age = age
}
}
// 인스턴스 생성으로 Reference Count가 1 증가
var snack: Human? = Human(name: "snack", age: 28) // Count(1)
// 다른 객체가 같은 인스턴스를 참조하여 Reference Count가 1 증가
var sunday: Human? = Human(name: "sunday", age: 26) // Count(2)
// 인스턴스에 대한 참조가 해제되어 Reference Count가 1 감소
snack = nil // Count(1)
// 인스턴스에 대한 참조가 해제되어 Reference Count가 1 감소
sunday = nil // Count(0)
// Reference Count가 0이 되어 메모리 해제
weak
과 unowned
와 같은 키워드를 적절하게 사용하여 강한 순환 참조를 방지해야 한다.
좋은 글이네요. 공유해주셔서 감사합니다.