欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

iOS之深入解析KVO的底层原理

发布时间:2024/5/28 编程问答 65 豆豆
生活随笔 收集整理的这篇文章主要介绍了 iOS之深入解析KVO的底层原理 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

一、KVO 简介

① 概念

  • KVO 全称 Key Value Observing,是苹果提供的一套事件通知机制,允许对象监听另一个对象特定属性的改变,并在改变时接收到事件。
  • 由于 KVO 的实现机制,所以对属性才会发生作用,一般继承自 NSObject 的对象都默认支持 KVO。
  • KVO 和 NSNotificationCenter 都是 iOS 中观察者模式的一种实现,区别在于,相对于被观察者和观察者之间的关系,KVO 是一对一的,而 NSNotificationCenter 是一对多的,KVO 对被监听对象无侵入性,不需要修改其内部代码即可实现监听。
  • KVO 可以监听单个属性的变化,也可以监听集合对象的变化。通过 KVC 的 mutableArrayValueForKey: 等方法获得代理对象,当代理对象的内部对象发生改变时,会回调 KVO 监听的方法。

② 使用

  • 使用 KVO 分为三个步骤:
    • 通过 addObserver:forKeyPath:options:context: 方法注册观察者,观察者可以接收 keyPath 属性的变化事件;
    • 在观察者中实现 observeValueForKeyPath:ofObject:change:context: 方法,当 keyPath 属性发生改变后,KVO 会回调这个方法来通知观察者;
    • 当观察者不需要监听时,可以调用 removeObserver:forKeyPath: 方法将 KVO 移除。需要注意的是,调用 removeObserver 需要在观察者消失之前,否则会导致 Crash。<
与50位技术专家面对面20年技术见证,附赠技术全景图

总结

以上是生活随笔为你收集整理的iOS之深入解析KVO的底层原理的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。