天天看點

避免NSNotification的一些坑

使用NSNotification的時候,總會碰到這種情況,明明隻post一次通知,但是卻執行了多次代碼。其實,解決這個問題還是容易的,那就是記住,有監聽就要有釋放。

如果NSNotification是用在ViewConroller裡面,那麼,最好是放在viewWillAppear以及viewWillDisappear。即執行如下代碼:

-(void)viewWillAppear:(BOOL)animated {

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(方法) name:@”AAA” object:nil];

}

-(void)viewWillDisappear:(BOOL)animated {

[[NSNotificationCenter defaultCenter] removeObserver:self name:@”AAA” object:nil];

}

不過也許可能有其他情況,導緻viewWillDisappear不執行,那麼這個時候,可以在addObserver之前,加上removeObserver。即執行如下代碼:

-(void)viewWillAppear:(BOOL)animated {
    [[NSNotificationCenter defaultCenter] removeObserver:self name:@"AAA" object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(方法) name:@"AAA" object:nil];
}
           

當然,你需要多次測試。