2011-08-26 105 views
2

在我viewDidLoad,添加我的控制器作为观察员两个通知:我需要从NSNotificationCenter中删除观察者一次,还是一次添加观察者?

[[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? 

回答

5

您只需将其移除一次即可。

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

+1

您还可以删除观察者特定通知, /或使用'removeObserver:name:object:'的对象。如果观察者观察到其他通知,这将使观察者保持在通知中心。 – Jasarien

+0

@Jasarien我认为你已经添加了评论,并且我编辑了我的答案,以便同时说出同样的内容:) –

+0

伟大的思想家们都认为:P – Jasarien

2

Documentation是最好的方式来清除你的疑虑:

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

[[NSNotificationCenter defaultCenter] removeObserver:someObserver];