Swift-deinitialization

提供:Dev Guides
移動先:案内検索

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)

プレイグラウンドを使用して上記のプログラムを実行すると、次の結果が得られます-

1
0

print = nilステートメントが省略されると、カウンターの値は初期化されないため、同じ値を保持します。

var counter = 0;//for reference counting

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

プレイグラウンドを使用して上記のプログラムを実行すると、次の結果が得られます-

1
1