0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

deinitについて

Last updated at Posted at 2024-10-09

deinitについて

deinitは、クラスのインスタンスがメモリから解放される直前に自動的に呼ばれる特別なメソッド。これをデストラクタとも呼ぶ。Swiftでは、ARC(Automatic Reference Counting)を使用しているため、通常、メモリ管理は自動で行われる。しかし、リソースを手動で解放する必要がある場合や、特定のクリーンアップ作業を行いたい場合にdeinitを使う。

例: 本のタイトルを管理するクラス

以下の例では、本のタイトルを管理するシンプルなクラスBooksを定義している。deinitを使って、インスタンスが解放される際にログを出力する。

class Books {
  var titles: [String]
  // コンストラクタで本のタイトルリストを初期化
  init(titles: [String]){
    self.titles = titles
  }
  // デストラクタでリソース解放時のログを表示
  deinit {
    print("deinit called")
  }
  // 登録されている本のタイトルをプリント
  func printTitles(){
    for title in titles {
      print(title)
    }
  }
}
// インスタンス作成と利用
var books: Books? = Books(titles: ["1984", "Brave New World", "The Catcher in the Rye", "To Kill a Mockingbird"])
books?.printTitles()
// インスタンスにnilを代入してメモリから解放し、deinitをトリガー
books = nil

実行結果:

1984
Brave New World
The Catcher in the Rye
To Kill a Mockingbird
deinit called

どのような場合に deinit が必要か

リソースの解放
ファイルハンドル、ネットワーク接続、またはデータベース接続など、システムリソースを直接管理している場合
データのクリーンアップ
インスタンスの寿命が終わる際にデータベースへの書き込みやファイルへのログ出力が必要な場合
通知やオブザーバの解除
イベントの購読や通知リスナーの登録解除が必要な場合
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?