美文网首页
KVO底层原理

KVO底层原理

作者: 当优秀成为习惯 | 来源:发表于2019-01-21 15:48 被阅读4次

KVO本质

在修改对象属性调用set方法的时候会利用RuntimeAPI动态生成该对象的子类,并且让该对象的isa指针会指向这个全新的子类的类对象,拿 Person对象举例,生成的子类为NSKVONotifying_Person,同时会调用类对象中Foundation_NSSetXXXValueAndNotify函数,里面具体会实现三个方法willChangeValueForKey,父类原来的setter方法,didChangeValueForKey内部会触发监听器(Observe)的监听方法(observeValueForKeyPath:ofObject:change:context:

如何手动触发KVO

手动调用willChangeValueForKey,didChangeValueForKey

直接修改成员变量会触发KVO

修改成员变量不会触发KVO,只有修改对象的属性或者用kvc才会。

相关文章

网友评论

      本文标题:KVO底层原理

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