iOS 基础知识整理(二)KVO

一般问起来kvo 不知道怎么回答 不就是 一个观察者机制!!!!!!
有什么好问的!!!!

好 现在来整理下 kvo的实现原理

kvo
k- key
v-value
o-observer

kvo遵循了NSKeyValueCoding,是oc对观察者模式的一种实现

实现原理

swift是一个静态语言,没有runtime机制,所以Swift里面想要用runtime 必须继承NSObject

比如说 a 对象被观察 这时候kvo就利用runtime 创建一个notic_a 的类 并且把当前的isa指针执行这个类 这个新类是原来类的子类 还会将原类的实例方法重写
并且 kvo为NSKVONotifion_a重写setter方法,在重写的setter方法中 修改值之前会调用willchangeValue 修改之后会调用didChangeValueForKey最后共这两个方法 将在observalueForKeyPath中被调用

kvo缺点

重复的add和remove导致crash

observer被释放导致崩溃

keyPath传错导致崩溃

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

推荐阅读更多精彩内容

  • KVC KVC定义 KVC(Key-value coding)键值编码,就是指iOS的开发中,可以允许开发者通过K...
    暮年古稀ZC阅读 2,202评论 2 9
  • 面向对象的三大特性:封装、继承、多态 OC内存管理 _strong 引用计数器来控制对象的生命周期。 _weak...
    运气不够技术凑阅读 1,153评论 0 10
  • 本文参考链接: iOS KVO详解 Foundation: NSKeyValueObserving(KVO) KV...
    拧发条鸟xds阅读 3,045评论 0 6
  • KVC KVC定义 KVC(Key-value coding)键值编码,就是指iOS的开发中,可以允许开发者通过K...
    jackyshan阅读 51,996评论 9 200
  • 连着有好几年了,都在说90后创业这个事,手机里,电脑上,你能接触的方方面面都渲染了,以前创业都是三十...
    KevenTao阅读 318评论 0 1