首页 > 代码库 > iOS设计模式之KVO Key-Value Observing 键值观察者模式的简单实用和介绍
iOS设计模式之KVO Key-Value Observing 键值观察者模式的简单实用和介绍
它提供一种机制,当指定的对象的属性被修改后,则监听者就会接受到通知。
就好像我们给手机定了一个闹钟,等到了制定的时间,闹钟就会响起,我们就会知道时间到了
这个过程中,我们就是监听者,闹钟就是被监听的对象
我们创建一个student类,使用KVO模式,给其中的username 属性添加监听者(观察者
XSStudent*su = [[XSStudentalloc]init];
su.name= @"zhangsan";
su.age = 12;
//Observer 观察者是谁
//KeyPath监听的属性,比如监听学生的name属性
//options :监听的内容
su.age = 12;
//Observer 观察者是谁
//KeyPath监听的属性,比如监听学生的name属性
//options :监听的内容
//NSKeyValueObservingOptionNew,NSKeyValueObservingOptionOld这两个参数的意思是监听它的新值和旧值
[su addObserver:self forKeyPath:@"name"options:NSKeyValueObservingOptionNew|
NSKeyValueObservingOptionOld context:nil];
[su addObserver:self forKeyPath:@"name"options:NSKeyValueObservingOptionNew|
NSKeyValueObservingOptionOld context:nil];
//修改属性,触发方法
su.name= @"lis";
//观察者观察到有值发生改变的时候发生的方法
- (void)observeValueForKeyPath:(NSString*)keyPath ofObject:(id)object change:(NSDictionary*)change context:(void*)context
{
//change 字典中的old new 是关键字,专门用来存储新值和老值
NSLog(@"oldname %@",[changeobjectForKey:@"old"]);
- (void)observeValueForKeyPath:(NSString*)keyPath ofObject:(id)object change:(NSDictionary*)change context:(void*)context
{
//change 字典中的old new 是关键字,专门用来存储新值和老值
NSLog(@"oldname %@",[changeobjectForKey:@"old"]);
NSLog(@"new %@",[change objectForKey:@"new"]);
}
注意,这里(NSString*)keyPath 传过来的就是你添加观察者的时候创建的key ,如果想要监听多个属性,你可以根据整个值来判断到底是哪个值的变化触发了该方法
iOS设计模式之KVO Key-Value Observing 键值观察者模式的简单实用和介绍
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。