Sko*_*ota 21 cocoa-touch objective-c nsnotifications nsnotificationcenter ios
我有一个基于iOS 5 ARC的项目,并且在我应该删除观察者的位置时遇到困难,NSNotificationCenter因为我已经注册了UIViewController.关于SO的类似帖子已经说过这应该在-dealloc方法中完成.尽管ARC项目中不需要此方法,但我已使用以下代码添加它:
- (void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
Run Code Online (Sandbox Code Playgroud)
作为测试,我打开UIViewController(在a内UINavigationController),做一些触发通知的事情,然后通过点击Back按钮将其弹出堆栈.然后UIViewController,我重新打开,并做更多事情来触发通知,但请注意每个回调被调用两次 - 表明以前的通知尚未注销.重复此过程只会导致每次回调被调用多次,因此它们似乎永远不会取消注册.
任何帮助,将不胜感激!
非常清楚你的dealloc方法没有被调用(也不是removeObserver调用).
为什么不在viewDidUnload:或viewWillDisappear:方法中删除你的UIViewController的观察者?
| 归档时间: |
|
| 查看次数: |
16066 次 |
| 最近记录: |