如何申报弱通知

时间:2016-08-08 13:26:28

标签: ios swift memory-management nsnotificationcenter deinit

也许标题没有提供良好的描述所以请阅读以下内容。

我有一个设置为收听事件的通知:

NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.checkIfNotificationsWereTurnedOnAfterAlertShowing), name: UIApplicationWillEnterForegroundNotification, object: UIApplication.sharedApplication())

然后我想删除此通知的观察者。 我发现我需要像这样使用deinit:

deinit  { 
    NSNotificationCenter.defaultCenter().removeObserver(UIApplicationWillEnterForegroundNotification)
    print("deinit")
}

但问题是,当我关闭视图控制器时,程序永远不会执行deinit功能。 在这answer我发现它可能是由于强烈的参考。

我查了很多链接,但无法找到如何声明通知的弱引用。 那么如何申报弱通知呢?

希望我的问题很明确。

期待您的帮助。

1 个答案:

答案 0 :(得分:1)

我无法找到使用deinit处理此问题的方法,所以我决定删除viewWillDisappear中适用于我的观察者。 Rob Napier在上面的评论中建议