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;

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容