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️⃣