释放通知的两种方法
1.
[[NSNotificationCenter defaultCenter] removeObserver:self name:name object:nil];
2.
- (void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
先说第一种,苹果官方文档中的代码是在viewWillAppear的时候添加,viewWillDisappear的时候remove。当苹果在iOS7中增加了导航控制器侧滑返回功能(如果没有这个效果,可以看看是否重写了导航栏自带的返回键,而且没有开启这个功能),viewWillAppear:、viewWillDisappear:、viewDidAppear:、viewDidDisappear:方法调用变得更方便.但是,当侧滑的时候就会调用viewWillDisappear后又取消侧滑返回,会在这是remove通知,再继续操作会使通知失效.
再说第二种,使用dealloc方法,是在控制器销毁之时调用的。会释放控制器里所有的通知,但是,有时候dealloc却没有执行,比如:1.在使用NSTimer的时候;2.在block里面没有弱引用而造成的循环引用.
所以在使用dealloc的时候,建议打印一下,看看是否执行了.
iOS通知管理技巧
本文介绍了在iOS应用开发中,如何有效管理NSNotificationCenter的通知。探讨了两种主要的方法:在viewWillDisappear中移除观察者与在dealloc中移除所有通知。并讨论了它们各自的优缺点及注意事项。
6907

被折叠的 条评论
为什么被折叠?



