也许标题没有提供很好的描述,所以请阅读以下内容。
我有一个设置为监听事件的通知:
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.checkIfNotificationsWereTurnedOnAfterAlertShowing), name: UIApplicationWillEnterForegroundNotification, object: UIApplication.sharedApplication())
然后我想删除此通知上的观察者。 我发现我需要像这样使用 deinit:
deinit {
NSNotificationCenter.defaultCenter().removeObserver(UIApplicationWillEnterForegroundNotification)
print("deinit")
}
但问题是,当我关闭 View Controller 时,程序永远不会执行 deinit 函数。 在此answer我发现这可能是由于强引用造成的。
我检查了很多链接,但无法找到如何声明通知的弱引用。 那么如何声明弱通知呢?
希望我的问题很清楚。
期待您的帮助。
最佳答案
我无法找到使用 deinit
处理此问题的方法,因此我决定删除 viewWillDisappear
中的观察者,这对我来说效果很好。建议者Rob Napier在上面的评论中
关于ios - 如何声明弱通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38830468/