NSTimer/NSNotification/观察者模式

都需要在dealloc中释放

-(void)dealloc{

    //移除监听、观察对象

[object removeObserver:self forKeyPath:@"age"];

}

 1 、//添加观察对象

 [object addObserver: observer forKeyPath: @"age" options: 0 context: nil];

object: 被观察者

observer: 观察者,一般是 self 控制器

options: 有四个值

1、NSKeyValueObservingOptionNew 把更改之前的值提供给处理方法

2、NSKeyValueObservingOptionOld 把更改之后的值提供给处理方法

3、NSKeyValueObservingOptionInitial 把初始化的值提供给处理方法, 一旦注册,立马就会调用一次。通常它会带有新值,而不会带有旧值。

4、NSKeyValueObservingOptionPrior 分2次调用。在值改变之前和值改变之后。

context:上下文,可以带一些参数,任何类型都可以

所有的 kvo 监听到事件,都会调用此方法

1. 观察的属性

2. 观察的对象

3. change 属性变化字典

4. 上下文,与监听的时候传递的一致

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

你可能感兴趣的:(NSTimer/NSNotification/观察者模式)