KVO 的 "自动挡" 和 "手动挡"

默认情况下,我们只需要按照正常属性的键值观察,就是说属性值变化完全是由系统控制,我们只需要告诉系统监听什么属性,然后就直接等系统告诉我们就完事了。而实际上,KVO 还支持「手动挡」。
要让系统知道我们想开启手动挡,需要修改类方法 automaticallyNotifiesObserversForKey: 的返回值,这个方法如果返回 YES 就是自动挡,返回 NO 就是手动挡。同时该类方法还能精准实策,让我们选择对哪些属性是自动,哪些属性是手动。

+ (BOOL)automaticallyNotifiesObserversForKey:(NSString *)theKey {

BOOL automatic = NO;
if ([theKey isEqualToString:@"balance"]) {
    automatic = NO;
}
else {
    automatic = [super automaticallyNotifiesObserversForKey:theKey];
}
return automatic;

}

你可能感兴趣的:(KVO 的 "自动挡" 和 "手动挡")