【发布时间】:2021-07-13 03:31:14
【问题描述】:
最近我一直在查看我的代码,发现在我的一个视图控制器中,没有调用 deinit()。
注释掉这一行后,deinit调用成功:
NotificationCenter.default.addObserver(forName: .UIKeyboardWillShow, object: nil, queue: nil)
{ notification in self.keyboardWillShow(notification: notification) }
我知道您需要删除观察者,但如果我替换
self.keyboardWillShow(notification: notification)
与
print("hello world")
deinit() 调用成功。
我的本地函数“keyboardWillShow”中的代码被注释掉了,但是函数签名是
func keyboardWillShow(notification: Notification)
关于如何改进此代码以不保留引用并正确点击 deinit()/
的任何建议谢谢!!
【问题讨论】:
标签: ios swift memory manual-retain-release