观察者变为零时,观察者会自动删除吗? [英] Will observers automatically removed when observers become nil?
问题描述
我在viewDidLoad
中使用addObserver:selector:name:object:
.
我正在使用viewWillDisappear:animated:
中的removeObserver:name:object:
删除观察者.
And I'm using removeObserver:name:object:
in viewWillDisappear:animated:
to remove observer.
如果我无法通过将错误的参数传递给removeObserver:name:object:
来删除观察者,将会发生什么?
(例如,如果我将错误的通知传递给参数name
或将错误的对象传递给object
或Observer
,则不会删除观察者)
What will happen if I failed to remove observer by passing wrong parameter to removeObserver:name:object:
?
(For example, observer isn't removed if I pass wrong notification to parameter name
or wrong object to object
or Observer
)
如果在调用removeObserver:name:object:
之后观察者仍然不为零,我可以发现删除观察者失败,因为将调用notifySelector.
If the observer still not nil after calling removeObserver:name:object:
, I can find out that removing observer failed because notificationSelector will being called.
但是如果观察者在调用removeObserver:name:object:
之后变为nil,我将无法确定移除观察者是否失败.
But if the observer become nil after calling removeObserver:name:object:
, I can not find out whether removing observer failed or not.
观察者变为零时,观察者会自动删除吗?
还是NSNotificationCenter
中的notification dispatch table
变得越来越大,最终导致该应用变慢?
Will observers automatically removed when observer become nil?
Or does notification dispatch table
of NSNotificationCenter
became larger and larger and eventually the app become slow?
编辑
当我使用UIViewController对象的子类作为观察者时,调用ViewController的dealloc
后应用程序不会崩溃.
但是当我使用其他类的对象时,调用该对象的dealloc
后,应用程序崩溃.
When I use subclass of UIViewController object for observer, the app doesn't crash after ViewController's dealloc
are called.
But when I use a object of other class, the app crashs after the object's dealloc
are called.