可以先使用-removeObserver:,然后-addObserver:使用相同的名称调用吗?或者-addObserver:之前有先行规则-removeObserver:?
我尝试使用OS 4.0,它似乎没问题(没有崩溃,警告等等).
-(void) setObserver
{
[[NSNotificationCenter defaultCenter] removeObserver:self
name:OBSERVER_NAME object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector: @selector(selectorName)
name:OBSERVER_NAME
object:nil];
}
Run Code Online (Sandbox Code Playgroud)
原因是为了防止两个具有相同selectorName方法的观察者被调用两次,假设该-setObserver方法在其内部-viewDidLoad和内存警告被发出时再次被调用.
另外,我需要在调用-removeObserver:期间调用-dealloc吗?