【发布时间】:2012-07-17 16:25:27
【问题描述】:
我在viewDidLoad 中使用addObserver:selector:name:object:。
我在viewWillDisappear:animated: 中使用removeObserver:name:object: 来删除观察者。
如果我通过将错误的参数传递给removeObserver:name:object: 来删除观察者失败会发生什么?
(例如,如果我将错误的通知传递给参数name 或将错误的对象传递给object 或Observer,观察者不会被删除)
如果调用removeObserver:name:object:后观察者仍然不为零,我可以发现删除观察者失败,因为将调用notificationSelector。
但是如果观察者在调用removeObserver:name:object:后变为nil,我就无法知道移除观察者是否失败。
观察者变为 nil 时会自动移除观察者吗?
还是notification dispatch table 的NSNotificationCenter 变得越来越大,最终导致应用变慢?
编辑
当我使用 UIViewController 对象的子类作为观察者时,调用 ViewController 的 dealloc 后应用程序不会崩溃。
但是当我使用其他类的对象时,调用对象的dealloc 后应用程序崩溃。
【问题讨论】:
标签: iphone objective-c ios observer-pattern