键值观察是一种使对象获取其他对象的特定属性变化的通知机制。
控制层的绑定技术严重依赖键-值观察获得模型层和控制器层的变化通知。
为接收某个属性的键值观察通知,以下三个要素是必须的:
1,被观察的类当中你关心的属性必须遵循键值观察的。
2,你必须使用以下方法,将观察方对象与被观察方对象注册:ForKeyPath:options:context
3,观察方的对象必须实现以下方法:observeValueForKeyPath:ofObject:change:context;
如果你需要处理拥有对应关系的相关实体,那么可以重写keyPathForValueAffecting
ValueForKey:也可以实现一个适当的方法来注册依赖的键。
- (NSString *)fullName { |
return [NSString stringWithFormat:@"%@ %@",firstName, lastName]; |
} |
那么当firstName和lastName改动的时候,该值必须被通知。这是一种依赖方法。
+ (NSSet *)keyPathsForValuesAffecti |
{ |
NSSet *keyPaths = [super keyPathsForValuesAffecti |
|
if ([key isEqualToString:@"fullName"]) |
{ |
NSSet *affectingKeys = [NSSet setWithObjects:@"lastName", @"firstName",nil]; |
keyPaths = [keyPaths setByAddingObjectsFromSe |
} |
return keyPaths; |
} |
你也可以实现一个遵循命名规则的类方法keyPathsForvaluesAffecti
ng 以达到同样的效果。
+ (NSSet *)keyPathsForValuesAffecti |
{ |
return [NSSet setWithObjects:@"lastName", @"firstName", nil |
} |