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

2018-07-18  本文已影响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的常用操作方法

二、实现

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);
}
上一篇 下一篇

猜你喜欢

热点阅读