首页 > 技术文章 > OC-KVO简介

AbeDay 2015-05-23 00:48 原文

一,概述

KVO,即:Key-Value Observing,它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知。简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应的观察者了。

二,使用:

1.kVC即键值、编码 KVO即键值、观察者


    model的对象初始化self.modelA = [[Model alloc] init];

    //设置Model类里面的属性值  这部分就是KVC,键值编码。即对属性赋值
    [self.modelA setValue:@"xiaonan" forKey:@"name"];
    [self.modelA setValue:[NSNumber numberWithInt:20] forKey:@"num"];
    //设置观察者,键值观察是建立在键值编码的基础之上的。只要name属性赋值改变就会调用回调方法
    [self.modelA addObserver:self forKeyPath:@"name" options:NSKeyValueObservingOptionNew context:nil];

//KVO观察者的回调方法

-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
    if ([keyPath isEqualToString:@"name"]) {
        NSLog(@"%@",[self.modelA valueForKey:@"name"]);
    }
}

例如后来改变键值属性

-(IBAction)buttonAction:(id)sender
{
    [self.modelA setValue:@"you" forKey:@"name"];

}

就会触发观察者的回调方法

然后在使用完这个方法的时候,我们需要注销这个观察者:

[self.modelA removeObserver:self forKeyPath:@"name"];

推荐阅读