IOS NSNotificationCenter 的使用
2015-08-20 14:58
281 查看
在Android中,为了解耦各个模块的耦合度,我们会使用很多方式,当然最简单而且效率最高的方式就是使用事件总线的方式进行消息分发,但是Android中并没有自带的消息分发机制,需要使用第三方库,比如EventBus、otto、或者自己实现,甚至最近开始流行使用RxJava去实现EventBus。
但是在IOS中,有自带的NSNotificationCenter可以使用。这里简单记录下NSNotificationCenter的使用方法。
1、添加观察者 NSNotificationCenter是一种典型的观察者模式,我们第一步需要去添加观察者
其中第一个参数为需要接收消息的类引用,第二个selector参数接收到消息后所调用的方法,此处会调用[self action:] name参数为消息的名称,是一个NSString类型,这个消息名称就是唯一区分消息的标志,object参数如果不填写nil,那该观察者就只会接受指定object发来的消息,而过滤其他object发来的消息为name的所有消息。
2、发送消息
在任何地方调用该方法后,会向第一步注册的观察者发送一个notifyName消息,object参数为发送者,也可不填,在此处并不关心,userInfo参数为该消息所带的参数,是一个NSDictionary类型。这个方法可能会有人刚开始的时候将object参数误认为是消息参数,其实并不是。
3、取消观察者
任何注册了观察的地方,在该观察者马上就要被释放前,或者coder认为该对象不应该继续接收该消息的时候,应该及时取消该观察者
或
但是在IOS中,有自带的NSNotificationCenter可以使用。这里简单记录下NSNotificationCenter的使用方法。
1、添加观察者 NSNotificationCenter是一种典型的观察者模式,我们第一步需要去添加观察者
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(action:) name:@"notifyName" object:nil ];
其中第一个参数为需要接收消息的类引用,第二个selector参数接收到消息后所调用的方法,此处会调用[self action:] name参数为消息的名称,是一个NSString类型,这个消息名称就是唯一区分消息的标志,object参数如果不填写nil,那该观察者就只会接受指定object发来的消息,而过滤其他object发来的消息为name的所有消息。
2、发送消息
[[NSNotificationCenter defaultCenter] postNotificationName:@"notifyName" object:self userInfo:userInfo];
在任何地方调用该方法后,会向第一步注册的观察者发送一个notifyName消息,object参数为发送者,也可不填,在此处并不关心,userInfo参数为该消息所带的参数,是一个NSDictionary类型。这个方法可能会有人刚开始的时候将object参数误认为是消息参数,其实并不是。
3、取消观察者
任何注册了观察的地方,在该观察者马上就要被释放前,或者coder认为该对象不应该继续接收该消息的时候,应该及时取消该观察者
[[NSNotificationCenter defaultCenter] removeObserver:self];
或
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"notifyName" object:nil];
相关文章推荐
- iOS开发-Autolayout小结
- iOS简单项目Demo-----贪吃蛇
- IOS开发页面间的传值 (代理和通知)
- 获取ios系统的电池电量比例,是否充电中,是否充满
- iOS 通知中心
- 获取ios系统的deviceModel, deviceName, systemName, systemVersion
- 如何获得ios系统持续运行时间
- ios客户端websocket的helloworld
- Quartz2d从易到难全解析---绘制圆弧、圆、图片和文字
- self和下划线的用法区别
- iOS页面跳转及数据传递
- IOS 用keychain(钥匙串)保存用户名和密码
- IOS屏幕旋转
- ios应用数据存储方式
- iOS学习笔记12-m3u8文件信息总结
- #import <frameFile/classFile.h> not found file 解决办法
- iOS 动画效果
- iOS申请真机调试证书-图文详解
- [ios]ScrollView小结
- 研究IOS毛玻璃的效果