避免NSNotification的一些坑
2017-04-17 14:47
211 查看
使用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。即执行如下代码:
当然,你需要多次测试。
如果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]; }
当然,你需要多次测试。
相关文章推荐
- 享受云计算的优势并避免一些更为突出的问题
- iOS避免内存警告的一些建议
- 3D数学--学习笔记(五岁以下儿童):总结一些概念(避免遗忘!)
- 一些避免竞争条件的实例
- iOS避免内存警告的一些建议
- 如何避免PHP实例代码中的一些坏代码
- 程序执行的一些漏洞,错误如何避免?
- 怎么避免一些不必要的弯路
- 避免Gson使用时将一些字符自动转换为Unicode转义字符
- 3D数学--学习笔记(五):一些概念总结(避免遗忘!)
- Java中避免NullPointerException的一些方法
- 避免Gson使用时将一些字符自动转换为Unicode转义字符
- Java多线程编程-(7)-使用线程池实现线程的复用和一些坑的避免
- 本文我们将探讨一些技巧教你如何创建iPhone App以及在创建应用时应该避免的一些错误认知
- 通过jQuery动态提交表单,解决一些避免get方式传值问题
- 关于bug的一些避免
- PHP/TP一些避免使用的用法
- 避免Gson使用时将一些字符自动转换为Unicode转义字符
- 避免全局变量污染的一些措施!
- 关于单例模式这种比上面1、2都好一些,既实现了线程安全,又避免了同步带来的性能影响。