ios中kvo/kvc注意事项

来源:互联网 发布:域名不能备案怎么办 编辑:程序博客网 时间:2024/06/05 02:10

关于KVO/KVC的作用主要为监听类中属性的值的变化。

至于如何使用,在此不多做介绍,网上很多教程。在此主要说说需要注意的地方。


比如我们添加对一个属性的监听:

//开启kvo/kvc模式,当userinfo中(todaySinging)签到属性发生变化时及时更改标签显示    [[UserInfo sharedUserInfo] addObserver:self forKeyPath:@"todaySigning" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:NULL];

当[UserInfo sharedUserInfo]中的属性todaySigning的值发生变化时,会触发:

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{    [self showOrHideViewWithIssued];    //当更改了当前是否签到的值时,重新设置按钮和标签的显示}

我们现在来改变属性值:

[UserInfo sharedUserInfo].todaySinging = @"1";         //1

[[UserInfo sharedUserInfo] setValue:@"1" forKey:@"todaySigning"];            //2

[[UserInfo sharedUserInfo] setValue:@"1" forKey:@"TodaySigning"];            //3


以上3句代码都能完成更改属性值,但值得一提的是,1和2在改变属性值的同时会触发KVO/KVC,而3由于key的首字母是大写,与属性名的首字母不匹配,所以不会触发KVO/KVC

0 0
原创粉丝点击