NSNotificationCenter 是同步
来源:互联网 发布:linux lua 环境变量 编辑:程序博客网 时间:2024/05/16 11:03
对象之间进行通信最基本的方式就是消息传递,在Cocoa中提供Notification Center机制来完成这一任务。其主要作用就是负责在任意两个对象之间进行通信。使用方法很简单,如下几个步骤即可:
假设A与B之间进行通信,B来触发事件,A接受该事件,并作出响应。
1) A编写自定义的消息响应函数update
2) A向消息中心注册,[NSNotificationCenter defaultCenter] addObserver: self selector:@selector(update) name:@"update" object:nil]
3) B触发事件[[NSNotificationCenter defaultCenter] postNotificationName:@"update" object:nil]
每一个进程都有一个默认的NSNotificationCenter,可以通过类方法defaultCenter获取该消息中心的实例。消息中心可以处理同一进程中不同对象之间的消息。如果要在同一台机器上进行进程间的通信,需要使用NSDistributedNotificationCenter。
消息中心以同步的方式将消息分发到所有的观察者中,换言之,直到所有的观察者都收到消息并处理完毕以后,控制权才会回到调用者的手里。相当是windows SDK 里的sendMassage
它这个post动词有点过分,NND,从VS过渡IOS的还真有点伤不起啊!
当程序员们听到notification center的时候, 他们可能会联想到IPC(进程间通讯).他们认为:"我在一个程序中创建一个observer,然后在另外一个程序中发送一个notification". 这个设计没有办法工作的, notification center允许同一个程序中的不同对象通许,它不能跨越不同的程序 [Notification 就是设计模 式中的 观察者模式, cocoa为我们实现了该模式, 就像Java也有同样的实现一样]
notification对象的object变量是poster,如果我们想要notification对象传递更多的信息,我们可以使用user info dictionary. 每个notification对象有一个变量叫 userInfo, 它是一个NSDictionary对象,用来存放用户希望随着notification一起传递到observer的其它信息
相当是sendMassage里的wparam与lparam也就是可以传递参数!
如果需要异步的处理消息,需要使用通知队列NSNotificationQueue。
在多线程程序中,通知会被分发到每一个发起消息的线程中,这可能与观察者注册时所在的线程已经不是同一线程。
- NSNotificationCenter 是同步
- NSNotificationCenter 是同步
- iOS深入学习(NSNotificationCenter消息转发是同步操作)
- iOS-NSNotificationCenter通知中心是同步操作还是异步操作
- NSNotificationCenter通知中心是同步操作还是异步操作
- NSNotificationCenter postNotificationName同步阻塞调用
- NSNotificationCenter postNotificationName同步阻塞调用
- NSNotificationCenter的同步和异步
- NSNotificationCenter同步异步的问题
- NSNotificationCenter
- NSNotificationCenter
- NSNotificationCenter
- NSnotificationcenter
- NSNotificationCenter
- NSNotificationCenter
- NSNotificationCenter
- NSNotificationCenter
- NSNotificationCenter
- 关于多个ViewController之间进行数据传递的方法
- EidtText trim();
- 快速在CentOS下搭建LAMP(Apache、MySQL、PHP)环境
- 【Cocos2d-x游戏引擎开发笔记(12)】粒子系统实现与用户交互的特效
- 第11章、日期DatePicker与时间TimePicker控件(从零开始学Android)
- NSNotificationCenter 是同步
- Android LlistView +Button +TextView
- 关于REST网络服务
- 集中采购业务的实现
- CRC校验原理
- fd_set函数学习
- 后勤与FI集成的几个配置地方
- CCS3.3利用profile对程序的运行时间进行统计
- JSP中使用EL表达式 ieELIgnoed问题