首页 > 代码库 > KVO的简单用法
KVO的简单用法
KVO,即:Key-Value Observing,它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知。简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应的观察者了。
//KVO是基于KVC的,观察者可以观察一个对象的某个属性(key),但这个属性的值(value)发生变化的时候,会触发一个事件
//KVO中涉及到以下几个概念
//被观察者 通常是 Model
//观察者 通常是 Controller
//key 被观察者的某个属性
//value key对应的值
//设计模式中有一种设计模式 :观察者模式
//KVO是观察者模式的一种实现方式,属于观察者设计模式
//******KVO的使用流程
//1.创建被观察对象
//2.为被观察者指定观察者
//3.实现 回调方法
//4.修改 被观察的属性(会触发 回调方法)
//5.移除观察者
实例:
创建一个Person类 ,Person类有一个name属性
根控制器ViewController.m中代码
#import "ViewController.h"#import "Person.h"@interface ViewController (){ Person *_p;}@end@implementation ViewController-(void)dealloc{ [_p removeObserver:self forKeyPath:@"name"]; [_p release]; [super dealloc];}- (void)viewDidLoad{ [super viewDidLoad]; //p用作被观察者 _p = [[Person alloc] init]; [_p addObserver:self forKeyPath:@"name" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:@"hello"]; _p.name = @"lisi"; // Do any additional setup after loading the view, typically from a nib.}//被观察者的属性发生变化时,才会触发此方法-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{ NSLog(@"object = %@",object); NSLog(@"keyPath = %@",keyPath); NSLog(@"change = %@",change); NSLog(@"context = %@",context);}- (void)didReceiveMemoryWarning{ [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}@end
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。