关于KVO/KVC

首先说说KVO/key value observe:

KVO是iOS中一种观察模式,主要用于观察对象属性的变化,当给属性加KVO后 即

p = [[Person alloc]init];

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

self  就不多说了 和add target 的一样 

KeyPath 指属性的’路径‘ 这里对象p 中有个属性为age 则 ’路径‘就为 'age'

若p对象还有个属性dog dog有个属性为name 那么 如果要观察p 的dog 属性的name 属性 则KeyPath为‘dog.name’

options 则为观察值,这里观察的是新和旧2个值

context 为上下文环境,当有多个对象有同一属性都需要观察时,这里要传个参数进去 以分辨哪个对象一般传个参数用于区分即可 不用时可传nil

,每被观察的属性发生变化时都会调用该方法

observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change

其中KeyPath和上文一样 这里不多说

object 为属性发生变化的对象 这里为p

change 里面存有新旧变化值

  new = 11;

    old = 10;


注意:当使用kvo 时 修改属性的值必须用点语法或者kvc 给对象属性赋值,否则不生效(因为生效前提是对象必须调用set方法赋值)

下面讲一下KVC /Key Value Coding;

KVC可以理解成一种编码格式,

特点是不需要知道属性类别 可以用同一代码对任意属性直接赋值

以上文p为例

[p setValue:@"15" forKey:@"age"];//给p的age 属性赋值

[p valueForKey:@"age"];//取出p属性age 的值

setValue:forKeyPath:  方法中KeyPath 与上文所述keyPath一样

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值