2013-10-03 221 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