博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
KVC与KVO
阅读量:4078 次
发布时间:2019-05-25

本文共 906 字,大约阅读时间需要 3 分钟。

1、键值编码KVC
常用的KVC操作方法如下:
    •    动态设置: setValue:属性值 forKey:属性名(用于简单路径)、setValue:属性值 forKeyPath:属性路径(用于复合路径,例如Person有一个Account类型的属性,那么person.account就是一个复合属性)
    •    动态读取: valueForKey:属性名 、valueForKeyPath:属性名(用于复合路径)
具体查找规则(假设现在要利用KVC对a进行读取):
    •    如果是动态设置属性,则优先考虑调用setA方法,如果没有该方法则优先考虑搜索成员变量_a,如果仍然不存在则搜索成员变量a,如果最后仍然没 搜索到则会调用这个类的setValue:forUndefinedKey:方法(注意搜索过程中不管这些方法、成员变量是私有的还是公共的都能正确设 置);
    •    如果是动态读取属性,则优先考虑调用a方法(属性a的getter方法),如果没有搜索到则会优先搜索成员变量_a,如果仍然不存在则 搜索成员变量a,如果最后仍然没搜索到则会调用这个类的valueforUndefinedKey:方法(注意搜索过程中不管这些方法、成员变量是私有的 还是公共的都能正确读取);
2、键值监听KVO
在ObjC中使用KVO操作常用的方法如下:
    •    注册指定Key路径的监听器: addObserver: forKeyPath: options:  context:
    •    删除指定Key路径的监听器: removeObserver: forKeyPath、removeObserver: forKeyPath: context:
    •    回调监听: observeValueForKeyPath: ofObject: change: context:
KVO的使用步骤也比较简单:
    1.    通过addObserver: forKeyPath: options: context:为被监听对象(它通常是数据模型)注册监听器
    2.    重写监听器的observeValueForKeyPath: ofObject: change: context:方法

转载地址:http://kjsni.baihongyu.com/

你可能感兴趣的文章
大数据入门:ZooKeeper工作原理
查看>>
大数据入门:Zookeeper结构体系
查看>>
大数据入门:Spark RDD基础概念
查看>>
大数据入门:SparkCore开发调优原则
查看>>
大数据入门:Java和Scala编程对比
查看>>
大数据入门:Scala函数式编程
查看>>
【数据结构周周练】002顺序表与链表
查看>>
C++报错:C4700:使用了非初始化的局部变量
查看>>
【数据结构周周练】003顺序栈与链栈
查看>>
C++类、结构体、函数、变量等命名规则详解
查看>>
C++ goto语句详解
查看>>
【数据结构周周练】008 二叉树的链式创建及测试
查看>>
《软件体系结构》 第九章 软件体系结构评估
查看>>
《软件体系结构》 第十章 软件产品线体系结构
查看>>
《软件过程管理》 第六章 软件过程的项目管理
查看>>
《软件过程管理》 第九章 软件过程的评估和改进
查看>>
分治法 动态规划法 贪心法 回溯法 小结
查看>>
《软件体系结构》 练习题
查看>>
《数据库系统概论》 第一章 绪论
查看>>
《数据库系统概论》 第二章 关系数据库
查看>>