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