美文网首页iOS
KVO原理总结

KVO原理总结

作者: Sweet丶 | 来源:发表于2019-03-09 19:52 被阅读10次

iOS 用什么方式实现对一个对象的KVO?

  1. 利用runtime api动态生成一个子类,并让对象的isa指针指向这个新生成的子类。
  2. 新生成的子类会重写setter方法,当外部调用setter方法修改属性时,会调用新的setter方法,其内部会调用foundation框架的_NSSetxxxValueAndNotify函数,里面的xxx是属性的类型。
  3. 该函数内部有以下调用:willChangeValueForKey: -> 父类原来的setter方法 -> didChangeValueForKey:
  4. didChangeValueForKey: 方法的内部会使属性的监听者们调用每个监听者的方法- (void)observeValueForKeyPath:ofObject:change:context:
  5. 由上可知,如果是自己手动给成员变量赋值,不会调用到setter方法,也就不会触发KVO; 如果要手动触发KVO,需要自己手动调用willChangeValueForKey:didChangeValueForKey: 方法,只调用后者是无效的

相关文章

  • iOS原理篇(一): KVO实现原理

    KVO实现原理 什么是 KVO KVO 基本使用 KVO 的本质 总结 一 、 什么是KVO KVO(Key-Va...

  • Objective-C的本质(4)—— KVO本质

    参考:iOS底层原理总结 - 探寻KVO本质iOS-KVO本质 问题一:kvo如果找到对应的属性 KVO不存在查找...

  • KVO原理总结

    iOS 用什么方式实现对一个对象的KVO? 利用runtime api动态生成一个子类,并让对象的isa指针指向这...

  • KVO的原理

    KVO基本原理: KVO深入原理: 适用于:

  • 底层原理

    iOS底层原理总结 - Category的本质 KVO详解及底层实现青少年一定要读的KVO指南 iOS 底层解析w...

  • iOS KVO

    KVO 示例 KVO的实现原理

  • 知识集锦

    https://github.com/starainDou 欢迎点星 KVO实现原理 KVO基本原理: 1 kvo...

  • 底层原理总结 — KVO

    1、iOS用什么方式实现一个对象的KVO?(KVO的本质是什么) 比如给Person对象的age属性添加KVO监听...

  • iOS高级进阶之KVO

    KVO的原理 分析原理 使用 手动调用 自己实现KVO NSObject+KVOBlock.h NSObject+...

  • 常见面试题--KVC和KVO

    1、KVO实现原理 2、KVC原理

网友评论

    本文标题:KVO原理总结

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