ARC: Swift에서 자동으로 메모리를 관리해주는 방식, 힙에 할당된 인스턴스의 레퍼런스 카운트(Reference Counts)가 0이 되면 더이상 참조되지 않는다고 판단하고 메모리를 해제시킨다.
클래스 인스턴스를 생성해서 변수에 할당하면 변수는 스택에 저장되고 인스턴스는 힙에 저장된다. 변수는 힙에 있는 인스턴스를 참조하는 형태로 인스턴스의 주소값을 갖고있는다.
class Student {
var name: String?
}
// Student 변수는 Stack에 저장되고, Student() 인스턴스는 Heap에 저장됨
let student = Student()
// person2 변수와 person 변수는 힙에 있는 같은 인스턴스를 가르친다.
let Student2 = student
스택에 있는 변수가 사용 종료돼서 메모리에서 사라지면 힙에 있는 클래스 인스턴스 메모리는 ARC가 자동으로 메모리를 해제시켜준다.
class Student {
var name: String
init(name: String) {
self.name = name
}
}
var student = Student(name: "Tom") // RC: 1️⃣
var tom = student // RC: 2️⃣
var studentPresident = student // RC: 3️⃣
print(student.name) // 출력값: Optional("Tom")
print(tom.name) // 출력값: Optional("Tom")
print(studentPresident.name) // 출력값: Optional("Tom")
studentPresident = nil // RC: 2️⃣
tom = nil // RC: 1️⃣
student = nil // RC: 0️⃣
