码迷,mamicode.com
首页 > 其他好文 > 详细

KVO-对象属性值改变监听

时间:2015-07-17 16:23:40      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:通知   kvo   键值对观察   

key value observer 键值观察

一、使用方法:

以person对象为例,person中的属性name,监听name值改变的方法

//添加监听的属性keyPath  options:要监听的是新值还是旧值

[self.person addObserver:self forKeyPath:@"name" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:nil];



//监听方法的实现

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {

    //keyPath:被监听的属性名

   //ofObject:被监听的对象

  //change:被监听属性的值包括新值和旧值

}


二、注意事项

1、KVO 是同步执行的,一旦对象的属性值发生变化,KVO的方法就会被调用,并且是在值改变线程中被调用,

    在多个线程中同时修改一个观察者属性的时候,KVO监听方法中会存在资源抢夺的问题,改善方法是使用互斥锁

    KVO中一般不涉及复杂的逻辑处理,只是做简单的观察


2、通知也可以认为是KVO,使用方法很类似,通知在对象销毁的时候需要删除通知,同样KVO在对象销毁的时候也需要删除观察者

   

- (void)dealloc {

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

}



版权声明:本文为博主原创文章,未经博主允许不得转载。

KVO-对象属性值改变监听

标签:通知   kvo   键值对观察   

原文地址:http://blog.csdn.net/u010438187/article/details/46926405

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!