iOS - ARC(Automatic Reference Counting)

이한솔·2023년 8월 25일
0

iOS 앱개발 🍏

목록 보기
13/49

ARC(Automatic Reference Counting)

ARC: Swift에서 자동으로 메모리를 관리해주는 방식, 힙에 할당된 인스턴스의 레퍼런스 카운트(Reference Counts)가 0이 되면 더이상 참조되지 않는다고 판단하고 메모리를 해제시킨다.



참조 타입과 Heap

변수 생성 시

클래스 인스턴스를 생성해서 변수에 할당하면 변수는 스택에 저장되고 인스턴스는 힙에 저장된다. 변수는 힙에 있는 인스턴스를 참조하는 형태로 인스턴스의 주소값을 갖고있는다.

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

0개의 댓글