美文网首页iOS Develop Daily Tips
iOS Daily Tip - KVO实现原理

iOS Daily Tip - KVO实现原理

作者: 过客又见过客 | 来源:发表于2018-03-07 21:05 被阅读2次

这是最近被刷屏的某2018 iOS面试题列表中的一题,值得一看。

KVO在Apple中的API文档如下:

Automatic key-value observing is implemented using a technique called isa-swizzling… When an observer is registered for an attribute of an object the isa pointer of the observed object is modified, pointing to an intermediate class rather than at the true class …

KVO基本原理

  • KVO是基于runtime机制实现的。
  • 当类的属性第一次被观察时,系统就会在运行期动态地创建该类的一个派生类,在这个派生类中重写基类中任何被观察属性的setter 方法,并在setter方法内实现真正的通知机制。如果原类为Person,那么生成的派生类名为NSKVONotifying_Person。
  • 每个类对象中都有一个isa指针指向当前类,当类对象的属性的第一次被观察,那么系统会将isa指针指向动态生成的派生类(NSKVONotifying_Person),从而在给被监控属性赋值时执行的是派生类的setter方法。
  • 键值观察通知依赖于NSObject 的两个方法willChangeValueForKey:didChangeValueForKey:。在被观察属性发生改变之前, willChangeValueForKey:会被调用,这就会记录旧的值。而当改变发生后,didChangeValueForKey:会被调用,继而 observeValueForKey:ofObject:change:context:也会被调用。

具体流程如下:


1829339-77757288cc139f44.png

可加群一起交流共同学习:801216530。

相关文章

  • iOS Daily Tip - KVO实现原理

    这是最近被刷屏的某2018 iOS面试题列表中的一题,值得一看。 KVO在Apple中的API文档如下: Auto...

  • iOS - KVO

    [toc] 参考 KVO KVC 【 iOS--KVO的实现原理与具体应用 】 【 IOS-详解KVO底层实现 】...

  • IOS底层(三) KVO底层实现原理

    @[TOC](IOS底层(三) KVO底层实现原理 ) 一,KVO简述 KVO的全称 Key-Value Obse...

  • iOS 自定义KVO

    自己实现kvo之前,需要知道iOS系统对kvo的实现。 系统实现kvo的原理 这依赖了OC强大的runtime特性...

  • 底层原理

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

  • iOS-底层原理-自定义KVO

    1.自定义KVO 1.上一篇博客了解了iOS 系统KVO的底层实现原理,那么这里进行自定义KVO,更好的理解原理和...

  • iOS面试题03-Foundation(★★★)

    《2018 iOS面试题系列》 一、KVO内部实现原理 KVO是基于runtime机制实现的 当某个类的对象第一次...

  • iOS KVO

    KVO 示例 KVO的实现原理

  • iOS-KVO(二) 使用注意点

    iOS-KVO(一) 基本操作iOS-KVO(二) 使用注意点iOS-KVO(三) 窥探底层实现iOS-KVO(四...

  • iOS-KVO(三) 窥探底层实现

    iOS-KVO(一) 基本操作iOS-KVO(二) 使用注意点iOS-KVO(三) 窥探底层实现iOS-KVO(四...

网友评论

    本文标题:iOS Daily Tip - KVO实现原理

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