신속한 파기 과정
소멸자는 클래스 인스턴스가 해제되기 직전에 호출됩니다. deinit
来标示析构函数,类似于初始化函数用init
라는 키워드로 표시하세요. 소멸자는 클래스 유형에서만 작동합니다.
파기 프로세스의 원리
Swift는 리소스를 해제하는 데 더 이상 필요하지 않은 인스턴스를 자동으로 해제합니다.
Swift는 자동 참조 계산(ARC)을 통해 인스턴스의 메모리 관리를 처리합니다.
일반적으로 인스턴스가 릴리스될 때 수동으로 정리할 필요가 없습니다. 그러나 자체 리소스를 사용하는 경우 몇 가지 추가 정리가 필요할 수 있습니다.
예를 들어, 파일을 열고 일부 데이터를 쓰기 위해 사용자 정의 클래스를 생성하는 경우 클래스 인스턴스가 해제되기 전에 파일을 닫아야 할 수도 있습니다.
구문
클래스 정의에서 각 클래스는 최대 하나의 소멸자를 가질 수 있습니다. 소멸자는 매개 변수를 사용하지 않으며 괄호 없이 작성됩니다.
deinit { // 执行析构过程 }
Example
var counter = 0; // 引用计数器 class BaseClass { init() { counter++; } deinit { counter--; } } var show: BaseClass? = BaseClass() print(counter) show = nil print(counter)
위 프로그램 실행의 출력 결과는 다음과 같습니다.
1 0
show = nil 문이 실행되면 계산기는 1을 빼고 쇼가 점유한 메모리가 해제됩니다.
var counter = 0; // 引用计数器 class BaseClass { init() { counter++; } deinit { counter--; } } var show: BaseClass? = BaseClass() print(counter) print(counter)
위 프로그램 실행의 출력 결과는 다음과 같습니다.
1 1