//1.KVO主要用于Model类,当Model类的一个属性发生变化的时候,会触发事件
//2.在设计模式中,有一种设计模式是观察者模式
//3.KVO是观察者模式的实现方式
//4.KVO里面涉及的几个概念
//4.1被观察者 一般是我们的Model类
//4.2观察者 一般是controller
//4.3key 一般是Model类的属性
//4.4value 一般是Model类的属性对应的Value值
先创建一个简单的Model类:
@interface Person : NSObject
@property (nonatomic, copy) NSString *name;
@property (nonatomic, copy) NSString *gender;
@end
在控制中引入,并添加观察者模式:
#import "ViewController.h"
#import "Person.h"
@interface ViewController ()
{
Person *_person;
}
@end
以下代码写下viewDidLoad
{
//5.使用步骤
//5.1创建一个被观察者
_person = [[Person alloc]init];
_person.name = @"Duke";
_person.gender = @"男";
//5.2为被观察者指定观察者
[_person addObserver:self forKeyPath:@"name" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:nil];
//5.4改变属性的Value的值
// _person.name = @"公爵";
_person.name = @"丽霞";
_person.gender = @"man";
}
//5.3实现回调方法
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
NSLog(@"keyPath : %@",keyPath);
NSLog(@"object : %@",object);
NSLog(@"change : %@",change);
}
//5.5移除观察者
- (void)dealloc{
[_person removeObserver:self forKeyPath:@"name"];
}