KVO Key Value Observing 基于键值的观察者

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


与 NSNotification (通知)不同,键值观察中并没有所谓的中心对象来为所有观察者提供变化通知.取而代之地,当有变化发生时,通知被直接发送至处于观察状态的对象. NSObject 提供的这种基础的键-值观察实现方法.\


你可以观察任意对象属性,包括简单属性,对一或对多关系.对多关系的观察者将会被告知发生变化的类型-也就是任意发生变化的对象.


键-值观察为所有对象提供自动观察兼容性.你可以通过禁用自动观察通知并实现手动通知来筛选通知.


//这里用小孩和保姆的例子   在小孩类中使用 set 方法修改属性值,或KVC 才能触发 KVO

//保姆用 KVO (现实化就理解成婴儿监护器[婴儿对讲机])或(一个可以响的铃铛) ,如果 KVO 有反应了 保姆就去照顾小孩

-(id)initWithChildren:(Children *)children {      //重写初始化方法   //这里相当于一个事件,下面还要写个方法.

self = [super init];

if (self != nil){

_children = children

//观察小孩的 happyValue 值

//使用 KVO 为_ children 对象添加一个观察者,用于监听 happyValue 属性值是否被修改了.

[_children addObserver:self forKeyPath:@"happyValue"

                     options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld     //监听新值和旧值, 根据工程需要,一般值监听新值就可以了

                     context:NULL];

}

return self

}

//KVO 触发的方法.happy 值如果被修改了,则调用此方法.

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

blah blah blah

如果是多个参数,用 if 判断

if([keyPath isEqualToString:@"happyValue"])

{  blah blah blah   }

else if([keyPath isEqualToString:@"hungryValue"])

{  blah blah blah   }



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值