删除观察者失败

时间:2017-06-09 11:39:51

标签: ios observers

在我的应用程序中,我在ViewController中添加了一个观察者:

- (void)viewDidLoad {
    [super viewDidLoad];        
    [[NSUserDefaults standardUserDefaults] addObserver:self
                                            forKeyPath:@"messagesBadge"
                                               options:NSKeyValueObservingOptionNew
                                               context:NULL];
}

..然后清理它。

-(void)viewWillDisappear:(BOOL)animated{
    [[NSUserDefaults standardUserDefaults] removeObserver:self forKeyPath:@"messagesBadge" context:NULL];
}

然而,应用程序在 viewWillDisappear 上崩溃,记录:

  

'无法移除观察者 myViewController 0x78efa160 作为密钥   路径" messagesBadge"来自 NSUserDefaults 0x78e27f20 ,因为它是   未注册为观察员。'

我做错了什么?

1 个答案:

答案 0 :(得分:0)

我可以删除这个问题,但也许这对其他人有帮助:

viewWillDisappear 被调用时,崩溃只发生在第二次时间。

因此,我将addObserver从 viewDidLoad 移至 viewWillAppear 。修好了。