Latest web development tutorials

スウィフトデストラクタプロセス

クラスのインスタンスが解放される前に、デストラクタがすぐに呼ばれています。 使用キーワードは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