在我的应用程序中,我在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 ,因为它是 未注册为观察员。'
我做错了什么?
答案 0 :(得分:0)
我可以删除这个问题,但也许这对其他人有帮助:
当 viewWillDisappear 被调用时,崩溃只发生在第二次时间。
因此,我将addObserver从 viewDidLoad 移至 viewWillAppear 。修好了。