美文网首页
iOS KVC和KVO

iOS KVC和KVO

作者: T_label | 来源:发表于2017-04-12 22:17 被阅读29次

    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是由系统通知的。通知的优点是监听不局限于属性变化,可以对各种各样的状态进行监听,监听范围广,例如键盘的弹起,前后台等系统监听。

    相关文章

      网友评论

          本文标题:iOS KVC和KVO

          本文链接:https://www.haomeiwen.com/subject/smdvattx.html