我有一个基于iOS 5的ARC项目,在一个UIViewController
中注册了NSNotificationCenter
观察,但是不知道应该在哪里删除这个观察者。在stackoverflow上看到过一些类似的帖子,它们说应该在-dealloc
方法中删除。虽然在ARC项目中这个方法并不是必需的,但我已经添加了以下代码:
- (void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
作为测试,我打开一个 UIViewController
(在 UINavigationController
中),执行一些会触发通知的操作,然后通过点击“返回”按钮将其弹出堆栈。然后重新打开 UIViewController
,并执行一些更多的操作以触发通知,但是注意到每个回调都被调用两次 - 这表明之前的通知未被注销。重复这个过程只会导致每个回调被调用多次,因此它们似乎永远不会被注销。任何帮助将不胜感激!