在iOS6中取消注册NotificationCentre的观察者的位置?

时间:2012-10-03 13:23:59

标签: ios6 nsnotificationcenter

在iOS5之前,大多数人都是在dealloc中做到了。通过iOS5将该功能迁移到viewDidUnload。现在不推荐使用viewDidUnload并且永远不会调用它,看起来我们必须找到新的位置来取消注册我们的观察者。

问题在哪里?

1 个答案:

答案 0 :(得分:4)

从Apple文档中,视图永远不会被卸载。

  

在iOS 6之前,当出现低内存警告时,   UIViewController类如果知道它可以重新加载或清除它的视图   之后再次重新创建它们。如果发生这种情况,它也会调用   viewWillUnload和viewDidUnload方法为您的代码提供机会   放弃与您的视图关联的任何对象的所有权   层次结构,包括从nib文件加载的对象,创建的对象   在您的viewDidLoad方法中,以及在运行时懒惰地创建的对象   添加到视图层次结构中。在iOS 6上,视图永远不会被清除   永远不会调用这些方法。如果您的视图控制器需要   当内存不足时执行特定任务,它应该覆盖   didReceiveMemoryWarning方法。

因此,您将取消注册命令放入-(void)dealloc-(void)didReceiveMemoryWarning。即使在Arc -(void)dealloc来电中,您也无法拨打[super dealloc]