在 iOS 6 应用程序中,我有一些视图控制器被添加为具有默认通知中心的观察者。它们被添加到viewDidLoad
方法中是因为我希望控制器即使不在顶部也能接收通知。
很多人建议在dealloc
方法中删除观察者。但是,在添加和删除观察者时,我一直在记录消息NSLog()
,并且看起来dealloc
从未调用过(我正在使用 ARC)。
与人们的想法相反,该viewDidUnload
方法不是一个选项,因为在 iOS 5 中它只在内存不足的情况下被调用,而在 iOS 6 中它根本不被调用。
实际上似乎没有办法做文档要求的事情!顺便说一句,到目前为止,我的应用程序还没有崩溃,即使控制器被多次添加并且(显然)从未被删除。
注意:到目前为止,我只使用模拟器进行测试;是否有可能dealloc
在实际设备中被调用,但在模拟器中却没有?或者只是没有出现的呼吁NSLog()
(尽管它出现在其他任何地方)。