美文网首页
面试题:KVO、KVC 实现原理

面试题:KVO、KVC 实现原理

作者: KevinChein | 来源:发表于2018-06-07 21:31 被阅读59次

1.什么是KVO?什么是KVC

  • KVO: Key-Value Observing,俗称“键-值 监听”,可用于监听对象的某一属性改变


    KVO的简单使用.png
  • KVC:Key-Value Coding,俗称“键值编码”,可以通过一个key来访问某个属性

2.KVO的本质是什么?

  • 利用runtime消息发送机制动态创建NSNotify_XX子类,子类拥有自己的set方法实现
  • 在子类setter方法中实质是调用NSKeyValueObserving,
    set方法实现内部会顺序调用willChangeValueForKey方法、原来的setter方法实现、didChangeValueForKey方法,而didChangeValueForKey方法内部又会调用监听器的observeValueForKeyPath:ofObject:change:context:监听方法
  • 在observeDidChange方法中----observeValueForKeyPath:ofObject:change:context:监听方法

3.如何手动触发KVO

  • 先要手动调用willChangeValueForKey
  • 再调用DidChangeValueForKey

4.直接修改成员变量会触发KVO吗?

  • 不会
    5.通过KVC修改属性会触发KVO吗?
  • 不会

6.KVC的赋值和取值过程?查找顺序?实现原理?

事实证明再也找不到比MJ 总结的更详细的KVC了!!!


MJ-KVC原理.png

相关文章

网友评论

      本文标题:面试题:KVO、KVC 实现原理

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