KVO

作者: 南京小伙 | 来源:发表于2017-09-05 10:19 被阅读0次

    KVO实现机制

    当你观察一个对象时,一个新的类会动态被创建。这个类继承自该对象的原本的类,并重写了被观察属性的 setter 方法。重写的 setter 方法会负责在调用原 setter 方法之前和之后,通知所有观察对象值得更改。最后把这个对象的 isa(isa指针告诉运行时系统这个对象的类是什么) 指针只想这个新创建的子类,对象就变成了新创建的子类的实例。

    键值观察通知依赖于 NSObject 的两个方法:willChangValueForKey:didChangeValueForKey:

    在被观察属性发生改变之前,willChangeValueForKey:一定会被调用,会记录旧的值。而当改变发生后,observeValueForKey:ofObject:change:context:会被调用,继而会调用didChangeValueForKey:。(手动插入这两个方法实现手动调用 KVO)

    参考:

    http://blog.sunnyxx.com/2015/07/04/ios-interview/ 

    相关文章

      网友评论

          本文标题:KVO

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