美文网首页
iOS之KVC KVO

iOS之KVC KVO

作者: A訫飛Flyme | 来源:发表于2017-06-05 15:18 被阅读11次

KVC与KVO

由于ObjC主要基于Smalltalk进行设计,因此它有很多类似于Ruby、Python的动态特性,例如动态类型、动态加载、动态绑定等,他们底层实现机制都是isa-swizzing。今天我们介绍ObjC中的 键值编码Key Value Coding(KVC)、键值监听Key Value Observing(KVO)。

KVC

KVC的操作方法由NSKeyValueCoding协议提供,而NSObject就实现了这个协议,也就是说ObjC中几乎所有的对象都支持KVC操作。
通常我们使用 语法和set方式更改对象的状态,即为对象赋值。
它是一种可以通过字符串的名字(key)来访问类属性的机制,而不是通过调用Setter、Getter方法访问。(貌似说的有矛盾,待思考解决)

  • 动态设置: setValue:属性值 forKey:属性名(用于简单路径)、setValue:属性值 forKeyPath:属性路径(用于复合路径,例如Person有一个Account类型的属性,那么person.account就是一个复合属性)
  • 动态读取: valueForKey:属性名 、valueForKeyPath:属性名(用于复合路径)

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"];

(未完。。。)

相关文章

  • KVC 和 KVO

    iOS-KVC和KVO精炼讲解(干货)KVC 和 KVOiOS开发系列--Objective-C之KVC、KVO细...

  • KVC

    iOS 如何使用KVC iOS开发UI篇—Kvc简单介绍 iOS开发系列--Objective-C之KVC、KVO

  • KVC、KVO

    IOS开发系列--Objective-C之KVC、KVO - KenshinCui - 博客园

  • iOS - KVO

    [toc] 参考 KVO KVC 【 iOS--KVO的实现原理与具体应用 】 【 IOS-详解KVO底层实现 】...

  • iOS-KVO浅谈

    上一篇:iOS-KVC浅谈 前言:KVO 作为 KVC 的同袍兄弟,功能更强大,聊聊 KVO。 一、KVO 简介 ...

  • ReactiveCocoa相关

    随手记录: 1、iOS开发系列--Objective-C之KVC、KVO 2、ReactiveCocoa初探

  • iOS日记15-KVC

    1.iOS开发技巧系列---详解KVC 2.漫谈 KVC 与 KVO 3.KVC/KVO原理详解及编程指南 关键点...

  • iOS面试题:KVC的赋值和取值过程是怎样的?KVO原理是什么?

    更多:iOS面试题大全 1、KVC赋值 2、 KVC取值 3、 KVO原理 KVO 是 Objective-C 对...

  • iOS原理(二)----KVO,KVC

    iOS原理(二)----KVO,KVC KVO KVO的全称是Key-Value Observing,俗称“键值监...

  • 从网上收集的一些关键知识点总结

    iOS 中KVC、KVO、NSNotification、delegate 总结及区别

网友评论

      本文标题:iOS之KVC KVO

      本文链接:https://www.haomeiwen.com/subject/azvifxtx.html