避免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];
}

当然,你需要多次测试。

你可能感兴趣的:(IPhone开发,NSNotifica)