KVO

KVO实现机制

当你观察一个对象时,一个新的类会动态被创建。这个类继承自该对象的原本的类,并重写了被观察属性的 setter 方法。重写的 setter 方法会负责在调用原 setter 方法之前和之后,通知所有观察对象值得更改。最后把这个对象的 isa(isa指针告诉运行时系统这个对象的类是什么) 指针只想这个新创建的子类,对象就变成了新创建的子类的实例。

键值观察通知依赖于 NSObject 的两个方法:willChangValueForKey:didChangeValueForKey:

在被观察属性发生改变之前,willChangeValueForKey:一定会被调用,会记录旧的值。而当改变发生后,observeValueForKey:ofObject:change:context:会被调用,继而会调用didChangeValueForKey:。(手动插入这两个方法实现手动调用 KVO)

参考:

http://blog.sunnyxx.com/2015/07/04/ios-interview/ 

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

推荐阅读更多精彩内容

  • 上半年有段时间做了一个项目,项目中聊天界面用到了音频播放,涉及到进度条,当时做android时候处理的不太好,由于...
    DaZenD阅读 8,114评论 0 26
  • 一、概述 KVO,即:Key-Value Observing,它提供一种机制,当指定的对象的属性被修改后,则其观察...
    DeerRun阅读 13,397评论 11 33
  • 本文分为2个部分:概念与应用。概念部分旨在剖析 KVO 这一设计模式的实现原理;应用部分通过创建的项目,以说明 K...
    啊左阅读 58,093评论 107 438
  • iOS--KVO的实现原理与具体应用 长时间不用容易忘,这篇文章挺好的.转载自看本文分为2个部分:概念与应用。概念...
    超_iOS阅读 5,271评论 0 17
  • 本篇会对KVO的实现进行探究,不涉及太多KVO的使用方法,但是会有一些使用时的思考。 一、使用上的疑问 1.key...
    奋拓达阅读 3,496评论 0 2