
スウィフト -deinitializer
クラスインスタンスの割り当てを解除する前に、メモリ空間の割り当てを解除するために ‘deinitializer’を呼び出す必要があります。キーワード ‘deinit’は、システムリソースが占有するメモリ空間の割り当てを解除するために使用されます。初期化解除は、クラスタイプでのみ使用できます。
メモリ空間の割り当てを解除するための初期化解除
Swift 4は不要になったインスタンスを自動的に解放し、リソースを解放します。Swift 4は自動参照カウント(Automatic Reference Counting)で説明しているように、自動参照カウント(ARC)を使用してインスタンスのメモリ管理を処理します。通常、インスタンスの割り当てが解除されたときに手動クリーンアップを実行する必要はありません。しかし、自分のリソースを使って作業しているときは、自分でいくつか追加のクリーンアップを実行する必要があります。たとえば、ファイルを開いてデータを書き込むためのカスタムクラスを作成する場合、クラスインスタンスが割り当て解除される前にファイルを閉じる必要があります。
var counter = 0; // 参照カウント class baseclass { init() { counter++; } deinit { counter--; } } var print: baseclass? = baseclass() print(counter) print = nil print(counter)
私たちが上記のプログラムをPLAYGROUNDで実行すると、次の結果が得られます。
1 0
print = nil文が省略された場合、カウンタの値は初期化されていないため、同じ値を保持します。
var counter = 0; //参照カウント class baseclass { init() { counter++; } deinit { counter--; } } var print: baseclass? = baseclass() print(counter) print(counter)
私たちが上記のプログラムをPLAYGROUNDで実行すると、次の結果が得られます。
1 1
前のページ 次のページ