IOS 开发中的KVC 和KVO

1 、 KVC (key value coding)

通常我们使用点语法和set方式开更改对象的状态,即为对象赋值。如:

[stu setAge:10];

KVC:他是一种简介的更改对象的状态的方式,其实现方法是使用字符串来描述对象需要更改的属性。
KVC中使用:valueForKey:和setValue:ForKey:以字符串的形式想对象发送消息。
使用valueforKey:获取Student对象的name。

NSString *name = [Student valueForKey :@"name"];

使用setValue:ForKey:设置student对象的name。

[Student setVlue:@"zhangjl" forKey:@"name"];

KVC同时还可以对对象进行批处理
键路径(key path)
除了通过键来访问,kvc还支持通过键路径进行访问和赋值。
比如:利用键路径对Student对象的Card对象的no属性进行访问和赋值

[Student setValue:@"1234" forKeyPath: @"card.no"];
[Student valueForKeyPath:@"card.no"]

2、KVO(key value obeserveing)

kvo是一种非常重要的机制,他允许监听对象属性的变化。

 [p addObserver:<#(NSObject *)#> forKeyPath:<#(NSString *)#> options:<#(NSKeyValueObservingOptions)#> context:<#(void *)#>]
参数说明:
第一个参数:监听器对象
第二个参数:监听的属性
第三个参数:当属性改变时,需要传递什么值给监听器(枚举类型)
监听器需要实现监听方法
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
keypath:监听的属性
object:谁的属性改变了
change:改变的值或者原值  或者都是  在添加监听的options设置
移除监听器
但监听器是用完之后要进行移除
//删除观察者
[p removeObserver:self forKeyPath:@"name"];

总结:

  1. KVC方式可以更便捷的设置获取对象的值(可以批处理,键路径)。
    2.KVO可以对对象进行监听属性的变化。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • KVC(Key-value coding)键值编码,单看这个名字可能不太好理解。其实翻译一下就很简单了,就是指iO...
    黑暗中的孤影阅读 50,148评论 74 441
  • 什么是KVC和KVO?两者之间有何关系 KVC : 键值编码,是Key Value Coding 的简称,coco...
    兰章海晏阅读 9,021评论 0 3
  • KVC(Key-value coding)键值编码,iOS的开发中,可以允许开发者通过Key名直接访问对象的属性,...
    CALayer_Sai阅读 7,372评论 0 4
  • 在编程中,最常见的就是程序的流程取决于你所使用的各种变量和属性的值,根据变量和属性的值确定后面运行的代码,有时会检...
    pro648阅读 5,600评论 2 27
  • [太阳]“快乐我”的儿子问:妈妈,为什么虾籽的颜色不一样? [太阳]“快乐我”的妈咪我:肯定啊?男宝宝和女宝宝当然...
    李文燊阅读 1,207评论 0 0

友情链接更多精彩内容