【问题标题】:is removeObserver necessary on dealloc?在 dealloc 上是否需要 removeObserver?
【发布时间】:2011-12-29 08:38:05
【问题描述】:

在我的一个视图控制器中,它将自己添加为 UITextViewTextDidEndEditingNotification 通知的观察者,如下所示

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(done:) name:UITextViewTextDidEndEditingNotification object:nil];

现在我想知道 - 当视图控制器被释放时,我是否需要执行以下操作

[[NSNotificationCenter defaultCenter] removeObserver:self];

【问题讨论】:

  • Docs: "如果您的应用程序面向 iOS 9.0 及更高版本或 macOS 10.11 及更高版本,则无需在其释放方法中取消注册观察者。如果您的应用程序面向早期版本,请务必调用removeObserver:name:object: 在观察者或 addObserver:selector:name:object: 中指定的任何对象之前被释放。"

标签: iphone memory-management nsnotificationcenter


【解决方案1】:

是的,当观察者被解除分配时,您应该始终删除它们。否则通知中心将保留对现在已释放对象的引用,并继续尝试向它们转发通知。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-17
    • 1970-01-01
    • 2012-12-04
    • 1970-01-01
    • 2011-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多