B3-KVO概念(待续)

一、定义

     KVO就是key-value observing,即键值观察。同样也是观察者模式,主要的用处是监听对象属性的变化。KVO和KVC被称为cocoa的大招。
二、使用
// 1、添加监听方法
[self.p addObserver:self forKeyPath:@"name" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:@"hello world"];
/*
 参数
 1. 监听对象,即观察者
 2. 监听的键值路径->属性
 3. 监听选项
 4. 上下文- 因为可以监听多个对象的键值变化,通过上下文可以更好区分开!
*/
 // 2、所有KVO监听到的事件变化,都会执行此方法
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
    NSLog(@"%@ %@ %@ %@", keyPath, object, change, context);
}
// 1、keyPath:被监听的属性
// 2、object:被监听的属性
// 3、change:字典
// 4、context:上下文

三、特点:

    1、所有变化都会调用统一的监听方法!

    2、KVO 是同步的。

    3、使用KVO要注意多个线程如果要修改同一个对象的属性,多线程抢夺资源,会增加程序编码的难度。

    4、KVO用处,如果不涉及多线程,只是简单监听某一个对象的属性变化,使用KVO代码相对还是简单一些。

原文地址:https://www.cnblogs.com/yaann/p/4221119.html