1. ホーム
  2. swift

[解決済み] Swiftのdealloc

2022-05-10 06:43:29

質問

ビューコントローラの終了時に、いくつかのクリーンアップを行いたいと思います。 NSNotificationCenter 通知を削除することです。実装は dealloc を実装すると、Swift のコンパイラーエラーが発生します。

Cannot override 'dealloc' which has been marked unavailable

Swiftでオブジェクトの寿命が尽きたときに何らかのクリーンアップを行うには、どのような方法が望ましいですか?

どのように解決するのですか?

deinit {
    // perform the deinitialization
}

からの Swift ドキュメント :

クラスインスタンスが解放される直前に、deinitializerが呼び出されます。 呼ばれます。deinitキーワードで定義します。 初期化子を init キーワードで記述するのと同じです。非初期化子 はクラスタイプでのみ使用できます。

通常、インスタンスが解放されたときに手動でクリーンアップを行う必要はありません。 インスタンスが解放されたときに手動でクリーンアップする必要はありません。しかし、自分自身の リソースを使用している場合、追加のクリーンアップを行う必要があるかもしれません。 を自分で行う必要があるかもしれません。例えば、ファイルを開いてデータを書き込むカスタムクラスを作成した場合 ファイルを開き、そこにデータを書き込むカスタム・クラスを作成する場合、クラス・インスタンスが解放される前にファイルを閉じる必要があるかもしれません。 クラスのインスタンスが解放される前にファイルを閉じる必要があるかもしれません。