インスタンスが必要でなくなったとき、リソースを解放するために、Swift はインスタンスの割り当てを自動的に解除します。Swift はインスタンスのメモリ管理を、Automatic Reference Counting で説明されているように、自動参照カウント (ARC) によって処理します。インスタンスが割り当て解除されるとき、たいていは手動でクリーンアップを実行する必要はありません。しかし、自身のリソースを扱っているときには、自身で追加のクリーンアップを実行する必要があるかもしれません。例えば、ファイルを開いてデータを書き込むクラスを作成している場合、クラスインスタンスが割り当て解除される前にファイルを閉じる必要があります。

クラスあたりにデイニシャライザを最大で 1 つ、クラス定義に持つことができます。デイニシャライザはパラメータを受け取らず、丸括弧無しで記述します。

deinit {
    // デイニシャリゼーションを実行
}

インスタンスの割り当て解除が行われる直前に、自動的にデイニシャリゼーションが呼び出されます。デイニシャリゼーションを自身で呼び出すことは許可されていません。スーパークラスのデイニシャライザはサブクラスによって継承され、スーパークラスのデイニシャライザは自動的にサブクラスのデイニシャライザ実装の最後で呼び出されます。サブクラスにデイニシャライザが無い場合でも、スーパークラスのデイニシャライザは常に呼び出されます。

インスタンスはデイニシャライザが呼び出される後まで割り当て解除されないため、デイニシャライザはインスタンスのすべてのプロパティにアクセスすることができ、(閉じる必要があるファイルの名前を調べるような)プロパティによる処理を変更することができます。


Portions of this page are translations based on work created and shared by Apple and used according to terms described in the Creative Commons Attribution 4.0 International License.