NSNotification的几点说明
1、NSNotification消息的同步性
①NSNotification使用的是同步操作。即如果你在程序中的A位置post了一个NSNotification,在B位置注册了一个observer,通知发出后,必须等到B位置的通知回调执行完以后才能返回到A处继续往下执行。
因此,不要过多的或者低效的使用NSNotification,《Cocoa基本原理指南》一文推荐的方式是通过一些“中间的”观察者将通告的结果传递给它们可以访问的对象。
②如果想让NSNotification的post处和observer处异步执行,可以通过NSNotificationQueue实现。
2、多个观察者的执行顺序
对于同一个通知,如果注册了多个观察者,则这多个观察者的执行顺序和他们的注册顺序是保持一致的。
3、NSNotification通知转发线程
①NSNotificationCenter在转发NSNotification消息的时候,在哪个线程中post,就在哪个线程中转发。换句话说,不管你的observer是在哪个线程,observer的回调方法执行线程都和post的线程保持一致。
②如果想让post的线程和转发的线程不同,可以通过NSNotification重定向技术实现。
4、addObserver和removeObserver必须成对出现
官方文档中是这样描述的:
The notification center does not retain its observers, therefore, you must ensure that you unregister observers (usingremoveObserver: or removeObserver:name:object:) before they are deallocated. (If you don’t, you will generate a runtime error if the center sends a message to a freed object.)
再addObserver的时候,notification center并不增加观察者对象的引用计数,因此,在观察者对象被释放之前我们必须保证它们被从观察队列中移除,否则后果很明显!
来源:http://blog.csdn.net/wzzvictory/article/details/8489516
最新文章
- python学习笔记(2)
- Dynamics CRM 2013 installation
- List转换DataTable
- uva 1584.Circular Sequence
- mac打开.caj格式文件
- WCF - WAS Hosting
- QT-opencv小结
- The 2014 ACM-ICPC Asia Regional Anshan Online
- 图论基础之Dijkstra算法的初探
- Django安装Xadmin步骤
- 镜像站nginx
- hibernate多对多 一对多 及简单入门 主键生成策略
- Angular6封装LED时钟数字组件
- python 图片上添加文字
- Android 设置EditText光标位置(转)
- 正则split
- Lombok在工程中的使用
- oracle查询数据库最大连接数等信息
- Hadoop1.2.1 配置文件详解
- 状态栏,ActionBar,工具栏高度调整
热门文章
- ipv6nginx错误
- 12.OpenStack镜像和存储服务配置
- flask框架基本使用(1)(基本框架搭建与请求参数接收)
- hdu 1142(迪杰斯特拉+记忆化搜索)
- css伪类元素:after 的多功能用法——任意大小的底边框
- 我在16ASPX下了一个系统是ACCESS和VS2005做的我想把那个连接数据库的'DB_16aspx'的名字改了进不了了可是?
- hiho一下第129周 后缀自动机二·重复旋律6
- ARM常用汇编指令介绍
- 关于poedit打开po文件乱码的问题
- SONY的几款秋季新品都还是很不错的