我是否需要从NSNotificationCenter中删除观察者一次,或者添加多少次观察者?

时间:2011-08-26 10:51:45

标签: iphone nsnotificationcenter

在我的viewDidLoad中,我将我的控制器添加为两个通知的观察者:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkNetworkStatus:) name:NetworkStatusChangedNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkLocationStatus:) name:LocationStatusChangedNotification object:nil];

在我dealloc中,我应该删除一次还是两次? removeObserver方法似乎没有指定特定的通知。

[[NSNotificationCenter defaultCenter] removeObserver:self];
[[NSNotificationCenter defaultCenter] removeObserver:self]; // is this required?

3 个答案:

答案 0 :(得分:5)

您只需将其删除一次。

如果您需要,还可以使用-removeObserver:name:object:停止观察其中一个通知。

答案 1 :(得分:2)

Documentation是消除疑虑的最好方法:

The following example illustrates how to unregister someObserver for all 
notifications for which it had previously registered:

[[NSNotificationCenter defaultCenter] removeObserver:someObserver];

答案 2 :(得分:1)

参考资料:

  

RemoveObserver:   从接收者的调度表中删除指定给定观察者的所有条目。

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSNotificationCenter_Class/Reference/Reference.html

所以你只需要调用一次