[iOS] Deinitialization
Deinitialization
- 소멸자(deinitializer)는 클래스 인스턴스가 메모리에서 해제될 때 호출되는 함수
- 스위프트의 소멸자는 deinit 키워드를 사용해 사용할 수 있다. 작성방식은 생성자인 init과 유사하다. 스위프트 소멸자는 구조체가 아닌 클래스 타입에서만 작성 가능하다.
소멸자의 작동방식
Swift는 특정 클래스의 인스턴스가 더 이상 필요없을 때 메모리 공간을 확보하기 위해 인스턴스를 자동적으로 메모리에서 해제한다. Swift는 이런 메모리 관리를 ARC를 통해 수행한다. 특정 클래스 인스턴스를 메모리 상에서 해재하고 싶을 때 수동적으로 해당 인스턴스를 정리할 필요가 없다. ARC가 더이상 필요없는 인스턴스에 대해서 자동으로 메모리를 할당/해제 하기 때문
클래스의 소멸자는 하나의 클래스 인스턴스당 최대 하나씩 존재. 소멸자는 별도의 매개변수나 괄호 등을 명시하지 않는다.
소멸자는 해당 클래스 인스턴스의 메모리 해제가 필요할 때 자동으로 호출. 인스턴스가 메모리에서 해제되기 직전 호출
하지만 해당 소멸자를 직접 호출하는것은 혀용하지 않는다. 상위 클래스의 소멸자는 그들의 서브 클래스에의해서 상속. 또한 상위 클래스 소멸자는 자동적으로 마지막 서브 클래스의 소멸자 구현부에서부터 호출된다. 상위 클래스의 소멸자는 항상 호출된다.