KVO & 通知 小记
2016-03-19 11:14
387 查看
KVO的全称是Key-Value Observing,它实现了一种机制,对所关心的属性对象添加观察者,当属性值发生变化时会得到通知,我们可以对变化做相应的处理。看过设计模式的同学应该知道,这是一种典型的观察者模式。KVO的最大优点就是底层框架已经支持,开发人员不需要实现属性值发生变化时发送通知的方案,这样就大大减少开发的工作量。其次,KVO框架很强大,可以支持多个观察者观察同一属性,或者一个观察者监听不同属性。
KVO的使用比较简单,基本上都是三步:
1.注册观察者
addObserver:forKeyPath:options:context:
2.观察者中实现
observeValueForKeyPath:ofObject:change:context:
3.移除观察者
removeObserver:forKeyPath:
KVO的使用比较简单,基本上都是三步:
1.注册观察者
addObserver:forKeyPath:options:context:
2.观察者中实现
observeValueForKeyPath:ofObject:change:context:
3.移除观察者
removeObserver:forKeyPath:
//通知 注意postNotificationName 必须一致 [[NSNotificationCenter defaultCenter] postNotificationName:NotificationName object:self userInfo:dic]; //dic存放在userinfo中 dic中存放要传过去的值是个字典 //接受通知 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeAction:) name:NotificationName object:nil]; //KVO监听 /*KVO观察者方法 keyPath: 监听的属性名 object: 被观察的对象 change: 属性值 context: 上下设备文 */ [registerCtrl addObserver:self forKeyPath:@"属性名称1" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:nil]; [registerCtrl addObserver:self forKeyPath:@"属性名称2" options:NSKeyValueObservingOptionNew context:nil]; //触发的事件 - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { //object的值是registerCtrl if ([keyPath isEqualToString:@"属性名称1"]) { }else if ([keyPath isEqualToString:@"属性名称2"]) { } }
相关文章推荐
- POJ 3126 Prime Path(素数打表+BFS)
- 蓝桥杯 PREV-2 打印十字图 (简单对称模拟)
- 互联网教程基础之HTML 三
- 来自一位女程序员8年的总结。
- 获取winformGridView中选择的行列
- HDU 2108 Shape of HDU (判断是不是凸多边形 叉乘)
- JSTL函数标签库的fn标签
- 详解Linux系统中Oracle数据库程序的启动和关闭方式
- 烂泥:Postfix邮件服务器搭建之软件安装与配置
- ThinkPHP使用Smarty第三方插件方法小结
- [linux]ubuntu下使用Fillder
- Hadoop0.20.2+hbase-0.92.1+zookeeper-3.3.5 虚拟机ubuntu完全集群搭建
- 杭电2068 RPG的错排
- 并发编程的挑战
- 2016年3月19日,如何在web页面里面实现拨打电话的功能
- 使用 Graphviz 生成自动化系统图
- VS2015 单元测试
- 异步上传文件
- 自定义类的初始化列表
- git上传忽略文件功能