2017-06-09 9 views
0

を失敗した私はViewControllerをにオブザーバを追加します。オブザーバを削除すると、私のアプリで

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

は、後でそれをクリーンアップ..and。

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

しかし、viewWillDisappear上のアプリがクラッシュした場合、ログ記録:それはあるので

は「NSUserDefaults 0x78e27f20からキー パス "messagesBadge" のためにオブザーバーmyViewController 0x78efa160を削除することはできません はオブザーバとして登録されていません。

私は間違っていますか?私はこの質問を削除することもできますが、多分それは他の人に役に立つ

+1

代わりに 'dealloc'に入れてみてください。他の場所で既に削除しているかどうか確認してください – Tj3n

答えて

0

クラッシュがviewWillDisappearが呼び出されたの周りだけ時間が起こりました。

だから、私はviewWillAppearのviewDidLoadからaddObserverを動かしました。それはそれを修正した。

関連する問題