键值的依赖关系

键值观察是一种使对象获取其他对象的特定属性变化的通知机制。
控制层的绑定技术严重依赖键-值观察获得模型层和控制器层的变化通知。

为接收某个属性的键值观察通知,以下三个要素是必须的:
1,被观察的类当中你关心的属性必须遵循键值观察的。
2,你必须使用以下方法,将观察方对象与被观察方对象注册:ForKeyPath:options:context
3,观察方的对象必须实现以下方法:observeValueForKeyPath:ofObject:change:context;

ios键值观察技术
如果你需要处理拥有对应关系的相关实体,那么可以重写keyPathForValueAffecting ValueForKey:也可以实现一个适当的方法来注册依赖的键。
- (NSString *)fullName {
    return [NSString stringWithFormat:@"%@ %@",firstName, lastName];
}
那么当firstName和lastName改动的时候,该值必须被通知。这是一种依赖方法。
+ (NSSet *)keyPathsForValuesAffectingValueForKey:(NSString *)key
{
    NSSet *keyPaths = [super keyPathsForValuesAffectingValueForKey:key];
 
    if ([key isEqualToString:@"fullName"])
    {
        NSSet *affectingKeys = [NSSet setWithObjects:@"lastName", @"firstName",nil];
        keyPaths = [keyPaths setByAddingObjectsFromSet:affectingKeys];
    }
    return keyPaths;
}
你的重载通常应该调用父类并且返回包换父返回的所有成员的集合。

你也可以实现一个遵循命名规则的类方法keyPathsForvaluesAffecti ng 以达到同样的效果。
+ (NSSet *)keyPathsForValuesAffectingFullName
{
    return [NSSet setWithObjects:@"lastName", @"firstName", nil
}
当你为一个已经存在的使用范畴的类增加一个合成属性情况是:你不能重载范畴中的方法。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值