[iOS]三个问题全面理解KVO

问题1:KVO底层实现原理?

答:动态创建监听对象的派生子类,并使对象isa指向派生类,重写setter方法,当监听值发生变化前后,willChangeValueForKey ,didChangeValueForKey 会分别调用 ......(表层流程理解)

问题2:既然监听对象isa指向了派生类,那么调用 监听对象 的class 方法 返回的是什么?Object_getClass会返回什么?

答:kvo底层不仅仅实现了isa-swizzling, 且重写了class方法 返回本类,这点可看出对象ISA并不可靠。

object_getClass返回的是类对象的ISA指针,并不是监听对象的ISA指针,返回的名字是本类。

问题3:KVO使用有什么问题?

答:KVO还不支持block语法,需要单独重写父类方法,这样加上add和remove方法就会导致代码很分散。


参考文章:一网打尽KVO

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容