属性之间的依赖观察

  1. 使用场景:
    例如用户有一个fullName属性,此属性被其他观察者观察。它需要依赖firstName和lastName属性。也就是说当用户设置firstName或者lastName的时候,它的fullName观察者需要得到通知。
    这里强调的是多个属性的修改都会影响某一个属性,多改对一改,这里采用的一种依赖机制,fullName属性依赖多个key,用户只需要告诉KVO框架是如何依赖的即可。

  2. 如何建立依赖关系
    通过keyPathsForValuesAffectingValueForKey方法返回指定key所对应的依赖set集合,框架会自动建立fullName和另外两个属性的依赖。

+(NSSet*)keyPathsForValuesAffectingValueForKey:(NSString *)key  
{  
    NSSet *keyPaths = [superkeyPathsForValuesAffectingValueForKey:key];  

    if ([key isEqualToString:@"fullName"]) {  
        NSArray *affectingKeys =@[@"lastName",@"firstName"];  
        keyPaths =[keyPaths setByAddingObjectsFromArray:affectingKeys];  
    }  

    return keyPaths;  
}  

对fullName进行观察, 当对lastName进行赋值的时候,观察代理也会被触发.
[self addObserver:self forKeyPath:@”p.fullName” options:NSKeyValueObservingOptionNew context:nil];
self.p.firstName = @”G”;
结果: keyPath = p.fullName, change = {
kind = 1;
new = “”;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值