[Swift] ARC_(1)

나는 사과·2021년 3월 22일
0

TIL

목록 보기
9/17

ARC = Automatic Reference Counting
Swift는 프로그램의 메모리 사용을 관리하기 위해서 ARC 메모리 관리 기법을 사용한다. ARC는 이름처럼 자동으로 메모리는 관리하는 방식이고 더이상 필요하지 않은 클래스의 인스턴스를 메모리에서 해제하는 방식으로 동작한다. 다시 말하면 인스턴스를 참조할 경우 카운팅 횟수가 1씩 증가하고 횟수가 0이 될 경우에 해제를 한다는 것이다.

ARC는 컴파일 시 참조 카운팅을 시작해서 인스턴스가 언제 메모리에서 해제될지 예측할 수 있고 메모리 관리를 위해서 시스템 자원을 추가할 필요가 없다는 장점이 있다.
하지만, 제대로된 작동 규칙을 모른다면 해제되지 않는 인스턴스가 메모리에 남아있을 가능성이 있다는 단점이 있다.

class Person{
	let name: String
    
    init(name: String) {
    	self.name = name
    	print("사람이 생성되었습니다.")
    }
    
    deinit(){
    	print("사람이 사라졌습니다.")
    }
}
// 1
var personOne: Person = Person(name: "chang")
// 사람이 생성되었습니다.

// 2
personOne = nil 
// 사람이 사라졌습니다.

위 코드에서 1번에서 Person 클래스에 대한 인스턴스를 생성해주었기 때문에 참조 횟수는 1이 증가하지만 2번에서 nil을 할당함으로써 인스턴스 참조를 그만두게 되면 참조 횟수가 0이 되어서 디이니셜라이저가 호출이 된다.

앞으로
1. 강한참조
2. 약한참조
3. 미소유 참조
에 대해 하나씩 제대로 공부해보려고 한다.

0개의 댓글