2013-10-03 222 views
0

我有一個ARC啓用項目如何刪除觀察者

很少有觀察家增加viewDidLoad中

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(getSipNotification:) name:@"getSipNotification" object:nil]; 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(syncExtensionData:) name:@"syncExtensionData" object:nil]; 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showLocalNotification:) name:@"showLocalNotification" object:nil]; 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(outgoingCall:) name:@"outgoingCall" object:nil]; 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playRingtone) name:@"playRingtone" object:nil]; 

我想刪除所有的觀察者,所以我說在以下行viewDidUnload

[[NSNotificationCenter defaultCenter] removeObserver:self]; 

現在我的問題是,這是刪除所有觀察員?

如果不行怎麼辦?

UPDATE

如果我想刪除一個觀察者如何能做到這一點?

你能幫我嗎。

+0

是的,它刪除所有觀察家:) –

+0

請注意,viewDidUnload:是不是在大多數情況下消除觀察者正確的地方。最有可能你應該在dealloc,viewDidDissapear或其他東西中做到這一點。 – wirrwarr

回答

2

是的,它會刪除所有觀察者。

[[NSNotificationCenter defaultCenter] removeObserver:self]; 

而且你可以刪除這樣一個特定的觀察者......

[[NSNotificationCenter defaultCenter] removeObserver:self name:@"syncExtensionData" object:nil]; 
1

是的,它會刪除你的類中的所有觀察員。

您可以使用下面刪除單站:

[[NSNotificationCenter defaultCenter] removeObserver:self name:@"getSipNotification" object:nil]; 

要刪除單個觀察者。

2

在我的應用程序使用此通知:

特定觀察者消除這種方式:

-(void)viewWillAppear:(BOOL)animated 
{ 

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(deviceRotatedFeedBackView:) name:UIDeviceOrientationDidChangeNotification object:nil]; 

} 
-(void)deviceRotatedFeedBackView:(NSNotification*)notification 
{ 
    //right whetever you want 
} 
- (void)viewWillDisappear:(BOOL)animated 
{ 

    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIDeviceOrientationDidChangeNotification object:nil]; 
} 

可能它會幫助你。

0

viewDidUnload在iOS6及更高版本中已棄用,因此您的觀察者絕不會從iOS6及更高版本的通知中心刪除。要刪除單站嘗試

 - (void)removeObserver:(id)notificationObserver name:(NSString *)notificationName object:(id)notificationSender