首页 > 其他 > 详细

KVO的简单用法

时间:2014-08-05 19:12:10      阅读:306      评论:0      收藏:0      [点我收藏+]

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

 

KVO的简单用法,布布扣,bubuko.com

KVO的简单用法

原文:http://www.cnblogs.com/limicheng/p/3892852.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!