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并不增加观察者对象的引用计数,因此,在观察者对象被释放之前我们必须保证它们被从观察队列中移除,否则后果很明显!

官方文档:https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Notifications/Articles/Threading.html#//apple_ref/doc/uid/20001289-CEGJFDFG

来源:http://blog.csdn.net/wzzvictory/article/details/8489516

最新文章

  1. python学习笔记(2)
  2. Dynamics CRM 2013 installation
  3. List转换DataTable
  4. uva 1584.Circular Sequence
  5. mac打开.caj格式文件
  6. WCF - WAS Hosting
  7. QT-opencv小结
  8. The 2014 ACM-ICPC Asia Regional Anshan Online
  9. 图论基础之Dijkstra算法的初探
  10. Django安装Xadmin步骤
  11. 镜像站nginx
  12. hibernate多对多 一对多 及简单入门 主键生成策略
  13. Angular6封装LED时钟数字组件
  14. python 图片上添加文字
  15. Android 设置EditText光标位置(转)
  16. 正则split
  17. Lombok在工程中的使用
  18. oracle查询数据库最大连接数等信息
  19. Hadoop1.2.1 配置文件详解
  20. 状态栏,ActionBar,工具栏高度调整

热门文章

  1. ipv6nginx错误
  2. 12.OpenStack镜像和存储服务配置
  3. flask框架基本使用(1)(基本框架搭建与请求参数接收)
  4. hdu 1142(迪杰斯特拉+记忆化搜索)
  5. css伪类元素:after 的多功能用法——任意大小的底边框
  6. 我在16ASPX下了一个系统是ACCESS和VS2005做的我想把那个连接数据库的'DB_16aspx'的名字改了进不了了可是?
  7. hiho一下第129周 后缀自动机二·重复旋律6
  8. ARM常用汇编指令介绍
  9. 关于poedit打开po文件乱码的问题
  10. SONY的几款秋季新品都还是很不错的