신속한 파기 과정


소멸자는 클래스 인스턴스가 해제되기 직전에 호출됩니다. 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