ios中kvo/kvc注意事项

关于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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值