スウィフト – deinitializer

スポンサーリンク

本当にわからないとこがあった場合一人では解決できません。
『teratail』とはエンジニア特化型のQ&Aサイトです。 すべてのエンジニアさんが抱えている悩みを共有して 解決するための質問サイトです
無料なのでまずは登録して使ってみてください。メールアドレスだけで登録可能です ----------------------------------------------------------------------------------------


スウィフト -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

前のページ  次のページ

スポンサーリンク

プログラミングは独学からは挫折の可能性が高いです。まずは無料体験ができる
コードキャンプが本当におすすめ。無料体験でわからないところを聞きましょう。
転職補助つき。カリキュラム終了後に転職紹介をしてくれます。