guard let a = a
これがretain countを増やしていて、増やすまではクロージャの中で消えるかもしれないclass A { } var a: A = A() extension A { func deallocSelf() { a = A() print(self) // A } } let weakClosure = { [weak a] in print(a) // A a?.deallocSelf() print(a) // nil } weakClosure()
そもそもメソッド実行中に消えたら世界が壊れますねw