Swift-초기화 해제

클래스 인스턴스가 할당 해제되기 전에 메모리 공간을 할당 해제하기 위해 'deinitializer'를 호출해야합니다. 키워드 'deinit'는 시스템 리소스가 차지하는 메모리 공간을 할당 해제하는 데 사용됩니다. 초기화 해제는 클래스 유형에서만 사용할 수 있습니다.

메모리 공간 할당 해제를위한 초기화 해제

Swift 4는 더 이상 필요하지 않은 인스턴스를 자동으로 할당 해제하여 리소스를 확보합니다. Swift 4는 자동 참조 계산에 설명 된대로 자동 참조 계산 (ARC)을 통해 인스턴스의 메모리 관리를 처리합니다. 일반적으로 인스턴스 할당이 취소 될 때 수동 정리를 수행 할 필요가 없습니다. 그러나 자체 리소스로 작업하는 경우 몇 가지 추가 정리를 직접 수행해야 할 수 있습니다. 예를 들어 사용자 정의 클래스를 만들어 파일을 열고 일부 데이터를 쓰는 경우 클래스 인스턴스가 할당 해제되기 전에 파일을 닫아야 할 수 있습니다.

var counter = 0; // for reference counting
class baseclass {
   init() {
      counter++;
   }
   deinit {
      counter--;
   }
}
var print: baseclass? = baseclass()

print(counter)
print = nil
print(counter)

Playground를 사용하여 위의 프로그램을 실행하면 다음과 같은 결과를 얻습니다.

1
0

print = nil 문이 생략되면 카운터 값은 초기화되지 않았으므로 동일하게 유지됩니다.

var counter = 0; // for reference counting

class baseclass {
   init() {
      counter++;
   }
   deinit {
      counter--;
   }
}
var print: baseclass? = baseclass()
print(counter)
print(counter)

Playground를 사용하여 위의 프로그램을 실행하면 다음과 같은 결과를 얻습니다.

1
1