KVC/KVO

KVC:KeyValueCoding 直接通过键值访问对象的属性。而不是通过getter、setter


使用方法:

获取值:

valueForKey:传入NSString类型的名字

valueForKeyPath:传入NSString类型的路径:model.property

valueForUndefinedKey:它的默认实现是抛出异常,可以重写这个函数做错误处理

修改值

setValue:  forKey:为属性赋值

setValue: forKeyPath:

setValue:forUndefinedKey:

setNilValueForKey:当对非类对象属性设置nil时,调用,默认抛出异常。


 一对多关系成员的情况

mutableArrayValueForKey:有序一对多关系成员  NSArray

mutableSetValueForKey:无序一对多关系成员  NSSet


KVO:KeyValueObvering,键值观察编程

当对象属性值改变时会触发监听

使用方法

1、注册

2、实现监听方法

3、移除观察


例:model对象有属性name和age

给name添加监听

[self addObserver:self forKeyPath:@"name" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:nil];

实现监听方法

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
    if ([keyPath isEqualToString:@"name"]) {
        //do something
    }
}









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值