美文网首页
iOS中KVO实现的内部原理篇

iOS中KVO实现的内部原理篇

作者: 梁大大大大大壮_ | 来源:发表于2017-02-21 18:19 被阅读14次

09年的一篇文章,比较深入的探究了KVO的内部实现。

文章地址:https://www.mikeash.com/pyblog/friday-qa-2009-01-23.html

KVO 的实现机制

KVO的实现依赖于runtime。

当观察一个对象时,一个新的类会动态的被创建,这个类继承自该对象所属的类,并重写了被观察属性的setter方法;重写的setter方法会在调用setter方法前后发出通知给观察者。

最后把原对象的isa指针指向新的类。

KVO的缺陷

只能通过重写系统方法-observeValueForKeyPath:ofObject:change:context:来获取通知。不能使用自定义的selector,不能传递block。

关于对KVO缺陷的吐槽引用链接-->KVO缺陷

本文章仅作为学习记录使用,原博链接在这KVO的实现机制原博英文版    

中文版中文版 

相关文章

网友评论

      本文标题:iOS中KVO实现的内部原理篇

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