KVO

KVO是指键-值-观察者(key-value-observe)是一种使对象获取其他对象的特定属性变化的通知机制。
与NSNotification 不同的是。KVO 不需要通知中心对象。而是在对象属性变化之后会直接通知观察者。KVO是基于KVC的。

KVO的步骤

**1. 注册观察者 **
为了正确接受属性的变化通知,观察者对象必须先发一个消息给被观察者对象

- (void)addObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath options:(NSKeyValueObservingOptions)options context:(nullable void *)context;

/*
NSKeyValueObservingOptions 可选的是一个枚举值。我们通常用到的是两个
NSKeyValueObservingOptionOld | NSKeyValueObservingOptionNew
当属性发生变化时。我们可以把旧值和新值传递给观察者 
*/

** 2.接受变化通知 **
应该注意的是如果只是使用成员变量改变值的话是不会触发KVO的。要使用点语法,或者是KVC的方式改变值

// object 是被监听对象
- (void)observeValueForKeyPath:(NSString *)keyPath
                      ofObject:(id)object
                        change:(NSDictionary *)change
                       context:(void *)context;

** 3.移除观察者身份 **
在不需要观察时要进行移除, 若果没有

- (void)removeObserver:(NSObject *)observer
            forKeyPath:(NSString *)keyPath;

你可能感兴趣的:(KVO)