iOS KVC和KVO

KVC:键值编码,一个非正式的协议,使用字符串访问一个对象实例变量的机制。

一个对象在调用setvalue时,
1、首先根据方法名找到运行方法的时候所需要的环境参数。
2、它会从isa指针结合环境参数找到具体方法实现的接口。
3、再直接查找得到的具体的方法。

KVO:键值监听,指定对象的属性被修改,对象就会接受到通知。
使用KVO的前提是遵循 KVO 的属性设置方式来变更属性值。

使用步骤:
1、注册观察者,实施监听
2、回调方法中处理属性变化
3、移除观察者

原理:当观察对象A时,KVO机制动态创建A的子类,并为子类重写了被观察属性keyPath的set方法,set方法负责通知被观察对象属性改变的状况。
进一步分析:
利用对象的isa指针指向该对象的类,对象注册为观察者时,isa指针指向新子类,这个被观察的对象就变成新子类的对象,因而在该对象上对set方法调用就会调用已重写的set方法,从而激活键值通知机制。

通知(notification)比KVO多了发送通知的一步,对象之间直接交互,notification明显的多,KVO是由系统通知的。通知的优点是监听不局限于属性变化,可以对各种各样的状态进行监听,监听范围广,例如键盘的弹起,前后台等系统监听。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容