핵심 정리
- `deinit`은 `class`에서만 존재한다.
- strong reference가 0이 될 때 호출된다.
- `deinit` 종료 후 실제 메모리 해제가 진행된다.
`deinit`은 class 인스턴스의 strong reference count가 0이 되는 시점, 즉 메모리 해제 직전에 호출된다. ARC에서 객체가 내려가는 마지막 훅이다.
기록 없음
`struct`/`enum`은 값 타입이라 ARC 대상이 아니다. 그래서 `deinit` 같은 소멸자 훅이 없고, 값 생명주기는 스코프와 복사 semantics로 관리된다.
final class Worker {
deinit {
print("Worker deinit")
}
}
func run() {
var worker: Worker? = Worker()
worker = nil // strong reference 0 -> deinit 호출
}