Swift は、不要になったインスタンスのメモリへの割り当てを自動的に解除して、リソースを解放します。Automatic Reference Counting(自動参照カウント)で説明されているように、自動参照カウント(ARC)を通じてインスタンスのメモリを管理します。通常、インスタンスが解放されるときに手動でクリーンアップを実行する必要はありません。ただし、独自のリソースを取り扱っている場合は、追加のクリーンアップが必要になる場合があります。例えば、ファイルを開いてデータを書き込むカスタムクラスを作成する場合、クラスのインスタンスを解放する前にファイルを閉じる必要があります。
デイニシャライザの例を次に示します。この例では、シンプルなゲーム用に 2 つの新しいタイプ Bank と Player を定義しています。Bank クラスは、流通量が最大 10,000 の架空の通貨を管理します。ゲーム内に存在できる Bank は 1 つのみなので、Bank は現在の状態を保存および管理するための型プロパティと型メソッドを持つクラスとして実装されています:
receive(coins:) メソッドは、受け取った数のコインを Bank のコインストアに追加するだけです。
Player クラスは、ゲーム内のプレイヤーを表します。各プレイヤーは、常に一定数のコインを財布に保管しています。これは、プレイヤーの coinsInPurse プロパティによって表されます:
各 Player インスタンスは、銀行から指定数のコインを受け取って初期化されますが、銀行に指定された数のコインがない場合、Player インスタンスはその数よりも少ないコインを受け取る場合があります。
Player クラスは win(coins:) メソッドを定義し、銀行から一定数のコインを取得してプレイヤーの財布に追加します。Player クラスは、Player インスタンスの解放直前に呼び出されるデイニシャライザも実装します。ここで、デイニシャライザは単純にプレイヤーのすべてのコインを銀行に返します。
新しい Player インスタンスは、可能ならば 100 コインを受け取って作成されています。この Player インスタンスは、playerOne というオプショナルの Player 変数に保存されます。プレイヤーはいつでもゲームを終了できるため、ここではオプショナルの変数が使用されます。オプショナルを使用すると、現在ゲームにプレイヤーがいるかどうかを追跡できます。