美文网首页
iOS开发KVO

iOS开发KVO

作者: 本本的开心牧场 | 来源:发表于2018-06-28 10:16 被阅读0次

KVO 是 Objective-C 对观察者设计模式的一种实现,依赖于 Objective-C 强大的 Runtime。
KVO提供一种机制 指定一个被观察对象的某个属性,当这个属性发生变化时,KVO回调方法就会被触发。

  • 注意点

观察者观察的是属性,只有遵循 KVO 变更属性值的方式才会执行 KVO 的回调方法,例如是否执行了 setter 方法、或者是否使用了 KVC 赋值。
如果赋值没有通过 setter 方法或者 KVC,而是直接修改属性对应的成员变量,例如:仅调用 _name = @"newName",这时是不会触发 KVO 机制,更加不会调用回调方法的。
所以使用 KVO 机制的前提是遵循 KVO 的属性设置方式来变更属性值。

KVO用法

  1. 建立监听
  2. 处理监听
  3. 移除监听
建立监听
//第一个参数 observer:被观察对象
//第二个参数 keyPath: 被观察的属性名称
//第三个参数 options: 观察属性的新值、旧值等的一些配置(枚举)
//第四个参数 context:回调方法传值
[self addObserver:(nonnull NSObject *) forKeyPath:(nonnull NSString *) options:(NSKeyValueObservingOptions) context:(nullable void *)];
处理监听
//keyPath:被观察对象属性名称
//object:被观察的对象
//change:变化前后的值都存储在 change 字典中
//context:建立监听时,context 传过来的值
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context
{
}

移除监听

//需要移除的被观察对象
// 需要移除的被观察属性
// context:  建立监听时的上下文
 [self removeObserver:(nonnull NSObject *) forKeyPath:(nonnull NSString *) context:(nullable void *)];

相关文章

  • 知识点3

    26. 什么是KVC和KVO? KVO: iOS开发-KVO的奥秘 http://www.jianshu.com/...

  • KVC

    iOS 如何使用KVC iOS开发UI篇—Kvc简单介绍 iOS开发系列--Objective-C之KVC、KVO

  • KVO

    今天和大家讨论一下OC中KVO(KeyValueObserving)键值观察 KVO定义 KVO是iOS开发中的一...

  • KVC

    KVC原理剖析 - CocoaChina_让移动开发更简单 iOS开发底层细究:KVC和KVO底层原理 | iOS...

  • KVC 和 KVO

    iOS-KVC和KVO精炼讲解(干货)KVC 和 KVOiOS开发系列--Objective-C之KVC、KVO细...

  • iOS知识点,iOS面试题, iOS面试题总结

    推荐 :iOS七年开发之路网络笔记,iOS知识点总结,iOS开发笔记。KVC /KVO的底层原理高质量 iOS 博...

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

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

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

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

  • iOS-KVO(四) 自定义KVO+Block

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

  • iOS-KVO(一) 基本操作

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

网友评论

      本文标题:iOS开发KVO

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