スウィフトデストラクタプロセス
クラスのインスタンスが解放される前に、デストラクタがすぐに呼ばれています。 使用キーワードはdeinit
、デストラクタをマークするために同様の初期化関数の使用init
マークするために。 デストラクタは、クラス型にのみ適用されます。
デストラクタのプロセス原理
スウィフトは、自動的にインスタンスがもはやリソースを解放するために必要とされる解放しません。
自動参照カウント(ARC)によるスウィフトは、メモリ管理のインスタンスを処理します。
通常時に手動でインスタンスをきれいにするためにリリースされている必要はありません。 独自のリソースを使用している場合しかし、あなたはいくつかの余分なクリーニングを行う必要があります。
あなたがファイルを開いて、いくつかのデータを書き込むためのカスタムクラスを作成する場合たとえば、あなたはファイルを閉じるには、クラスのインスタンスの前に解放する必要があるかもしれません。
文法
クラスの定義では、各クラスには、最大1つのデストラクタを持つことができます。 言葉遣いの括弧なしで、任意のパラメータを指定せずにデストラクタ:
deinit { // 执行析构过程 }
例
var counter = 0; // 引用计数器 class BaseClass { init() { counter++; } deinit { counter--; } } var show: BaseClass? = BaseClass() print(counter) show = nil print(counter)
上記プログラム実行出力は、次のとおりです。
1 0
ショー= nilの文が実行されると、電卓マイナス1は、メモリが解放されます表示されます。
var counter = 0; // 引用计数器 class BaseClass { init() { counter++; } deinit { counter--; } } var show: BaseClass? = BaseClass() print(counter) print(counter)
上記プログラム実行出力は、次のとおりです。
1 1