欢迎使用CSDN-markdown编辑器
2015-09-16 23:41
239 查看
一、KVO的实现原理
1> KVO是基于runtime机制实现的
2> 当某个类的对象第一次被观察时, 系统就会在运行期动态地创建该类的一个派生类,在这个派生类中重写基类中任何被观察属性的 setter 方法。
派生类在被重写的 setter 方法实现真正的通知机制(Person→ NSKVONotifying_Person)
二、使用场景
1、避免了所谓的胶水代码,也就是说我不需要每次在有数据更新的地方都加上UI的更新操作
2、你或者说,数据更新的来源单一,我通常只需要在一处实现UI更新即可.那么考虑下,在手机平台上, 通常为了用户体验会将获取数据操作放到后台或次线程中,那么你更新UI操作又必须回到主线程.而使用KVO你就不需要操这些心.
3、从程序的结构而言,程序“”分离“”的比价彻底:获取数据的部分和UI更新的部分没有交叠,由KVO将两者联系了起来,这样看来难道不算是优雅吗。
1> KVO是基于runtime机制实现的
2> 当某个类的对象第一次被观察时, 系统就会在运行期动态地创建该类的一个派生类,在这个派生类中重写基类中任何被观察属性的 setter 方法。
派生类在被重写的 setter 方法实现真正的通知机制(Person→ NSKVONotifying_Person)
二、使用场景
1、避免了所谓的胶水代码,也就是说我不需要每次在有数据更新的地方都加上UI的更新操作
2、你或者说,数据更新的来源单一,我通常只需要在一处实现UI更新即可.那么考虑下,在手机平台上, 通常为了用户体验会将获取数据操作放到后台或次线程中,那么你更新UI操作又必须回到主线程.而使用KVO你就不需要操这些心.
3、从程序的结构而言,程序“”分离“”的比价彻底:获取数据的部分和UI更新的部分没有交叠,由KVO将两者联系了起来,这样看来难道不算是优雅吗。
相关文章推荐
- 四大作用域
- HDU 1253 胜利大逃亡
- 嵌入式入门之制作可烧写的TF/SD卡
- 将map型数据转换成json格式的字符串
- 《Java特种兵》
- Unity3d实现相机的跟随缩放旋转
- session的生命周期
- chown命令
- 终端程序切换前后台命令之bg,fg,jobs
- 使用Entity Framework时遇到的各种问题总结
- poj_3283 trie树
- mysql联合索引
- 服务化(RPC)思想的建立
- etc/fstab文件
- C# 操作系统回收站
- Android之Fragment 真正的完全解析(上)
- linux下的proc文件系统
- Entity Framework的默认值BUG解决方法
- wxpython初学者(五)之 Skip()
- macbook安装win10后改变滚动手势方向