您的位置:首页 > 产品设计 > UI/UE

keyPathForValuesAffectingValueForKey ios开发 kvo相关

2015-03-04 11:55 375 查看

keyPathForValuesAffectingValueForKey

键值观察是一种使对象获取其他对象的特定属性变化的通知机制。控制层的绑定技术严重依赖键-值观察获得模型层和控制器层的变化通知。为接收某个属性的键值观察通知,以下三个要素是必须的:1,被观察的类当中你关心的属性必须遵循键值观察的。2,你必须使用以下方法,将观察方对象与被观察方对象注册:ForKeyPath:options:context3,观察方的对象必须实现以下方法:observeValueForKeyPath:ofObject:change:context;ios键值观察技术如果你需要处理拥有对应关系的相关实体,那么可以重写keyPathForValueAffectingValueForKey:也可以实现一个适当的方法来注册依赖的键。
- (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;
}
你的重载通常应该调用父类并且返回包换父返回的所有成员的集合。你也可以实现一个遵循命名规则的类方法keyPathsForvaluesAffecting <key>以达到同样的效果。
+ (NSSet *)keyPathsForValuesAffectingFullName
{
    return [NSSet setWithObjects:@"lastName", @"firstName", nil
}
当你为一个已经存在的使用范畴的类增加一个合成属性情况是:你不能重载范畴中的方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐