美文网首页
iOS设计模式3 - 观察者模式_KVO

iOS设计模式3 - 观察者模式_KVO

作者: 朱_源浩 | 来源:发表于2018-07-18 10:31 被阅读35次

一、解析

1. KVO

KVO,即:Key-Value Observing,它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知。简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应的观察者了。

KVO机制图.png

(NSObject类已实现了NSKeyValueObserving协议,所以不用再声明)

2. KVO的使用步骤

1)通过addObserver: forKeyPath: options: context:为被监听对象(它通常是数据模型)注册监听器
2)重写监听器的observeValueForKeyPath: ofObject: change: context:方法

3. KVO的常用操作方法

  • 注册指定Key路径的监听器: addObserver: forKeyPath: options: context:
  • 删除指定Key路径的监听器: removeObserver: forKeyPath、removeObserver: forKeyPath: context:
  • 回调监听: observeValueForKeyPath: ofObject: change: context:

二、实现

1. 被观察的对象:(self或者其他被观察对象)

//  被观察对象的已有属性:
@property (nonatomic) NSMutableString *str;

//  对该属性添加观察者:
[self addObserver:self.ob  //观察者
       forKeyPath:@"str"   //观察的属性的名称
          options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld//属性变化设置选项
          context:@"pass context"//额外信息
];

2. 观察者,实现相应委托

-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object 
change:(NSDictionary *)change context:(void *)context{

    NSLog(@"Property '%@' of object '%@' changed: %@ context: %@",keyPath,object,change,context);
}
  • keyPath参数是被关注的属性
  • object是被关注的对象
  • change是字典类型,包含了属性变化的内容,这些内容与注册时属性变化设置的选项(options参数)有关。
  • context是注册时传递的上下文内容。

相关文章

  • 常用设计模式整理

    ios面试题(整理) ios常用的设计模式有哪些? MVC模式、委托模式、观察者模式(kvo、kvc、通知机制)、...

  • iOS KVO基础知识

    iOS KVO基础知识 1. 简介 KVO其实就对应设计模式的观察者模式,观察者能够观察其他对象(被观察者)的属性...

  • 深入理解KVO机制

    什么是KVO机制 KVO,全称是key_value_Observing,是ios中的一种设计模式,名为观察者模式,...

  • iOS设计模式总结

    iOS常用的设计模式: KVO/通知 -------> 观察者模式 观察者模式定义了一种一对多的依赖关系,让多个观...

  • iOS KVO,KVC

    iOS KVO,KVC KVO 1.KVO 是一种观察者设计模式,是利用 isa 混写机制来实现 KVO 的。 当...

  • iOS底层原理 - 设计模式与架构

    面试题引发的思考: Q: 用过哪些设计模式? iOS中主要使用单例模式、代理模式、观察者模式(通知、KVO)。 Q...

  • KVO与KVC

    KVO与KVC是观察者模式在iOS中的一种实现 KVO 一、KVO的介绍 KVO就是观察者模式,说白了就是你关心的...

  • KVO应用、原理及自实现

    一.KVO简介 KVO 是ios里,观察者设计模式的一种应用实现,依赖runtime,基于KVC,KVO提供了一种...

  • KVO详解

    KVO(Key-Value-Obersver)是iOS对于对象属性的一种源于观察者模式的设计。使用KVO可以使我们...

  • 浅论iOS设计模式

    一 iOS中都有什么设计模式? iOS中分别有以下设计模式: 1.代理模式 2.观察者模式 3.MVC模式 4....

网友评论

      本文标题:iOS设计模式3 - 观察者模式_KVO

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