デイニシャライザって言葉自体あまり著名ではないかもしれないけど、クラスのインスタンスが解放される直前に呼ばれる処理だよ。通常は最後の強参照がなくなると解放される。他で保持していると、スコープを抜けるだけではdeinitは呼ばれないよ。
デストラクタみたいなものだと思えばおk。
Swiftでデイニシャライザを使う
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
class Say { init() { print("Hey!!") } deinit { print("Yeah!!") } func hello() { print("Hello!!") } } func call() { let say = Say() // "Hey!!" (イニシャライザが呼ばれる) say.hello() // "Hello!!" // "Yeah!!" (デイニシャライザが呼ばれる) } call() |
こんな感じで、最初にinit()が呼ばれて、終わりにdeinitが呼ばれる。
ちなみに init() と違って deinit は括弧がつかないので注意。
