从另一个视图控制器中删除通知观察者

时间:2014-06-02 15:28:16

标签: ios nsnotificationcenter

您好我正在开发Iphone应用程序,其中为UIApplicationWillEnterForegroundNotification注册了一个通知观察者。现在我想从另一个视图控制器中删除那个。我的代码看起来像

[[NSNotificationCenter defaultCenter]
 addObserver:self
 selector:@selector(applicationBecomeActive)
 name:UIApplicationWillEnterForegroundNotification
 object:nil]; 

我正在创建一种删除观察者的方法:

-(void) removeObserver
{
  [[NSNotificationCenter defaultCenter] removeObserver:self]; 
} 

我从其他视图控制器调用此方法,但它无法正常工作。我想我必须存储观察员。但我不知道该怎么做。需要帮忙。谢谢。

1 个答案:

答案 0 :(得分:0)

第二个视图控制器需要对第一个视图控制器实例的引用。我们假设它在一个属性中保留:

@property (nonatomic, strong) FirstViewControler *firstViewController;

然后你的代码删除第一个视图控制器作为观察者将如下所示:

- (void)removeObserver
{
    [[NSNotificationCenter defaultCenter] removeObserver:self.firstViewController]; 
}

缺少的部分是:你必须在某个地方设置属性。在哪做这取决于你的代码。