美文网首页
有关KVC(一)

有关KVC(一)

作者: 击筑渐离 | 来源:发表于2019-03-05 10:44 被阅读0次

一   前言闲扯淡

一般情况下我们学习一个新的东西的过程,大概是这么一种过程:首先是怀着一种诚惶诚恐的心情接触了这个东西(对高大上的向往和渺小自我的卑微);接着了解这个东西的概念,思前想后的(也可能是徒劳无功)想弄明白这是个什么东西;一头包之后(亲身经历)烦躁而急切的要知道怎么用这个新的知识;然后又想知道什么时候会用到它,什么时候是它派上用场的最佳时机;等你燃烧你的卡路里去搞明白怎么用之后,又在搜索引擎的帮助下了解有关使用它(在学习的知识)的奇技淫巧完成进阶。这一整个流程完成之后,某一次遇到相关问题,你都像紫色的小葫芦娃遇到妖怪一样,掏出小葫芦大喊一声(在心里,喊出声音来那不是神经就是二笔):看法宝!!~~

一般情况下新的知识学习过程是这样的。

以上闲扯跟标题是无关的,~~嘻嘻。(请忍住想骂我的冲动)

以下内容有参考书籍:《iOS开发快速进阶与实战》(感觉不错的一本书,作者黄新宇)

二   先了解什么是KVC

KVC 是Key-Value-Coding的缩写,中文译名是键值编码。是Cocoa框架为我们提供的非常强大的工具,依赖于强大的Runtime机制,在Objective-C的动态性方面发挥了重要作用。

KVC的组要功能是通过变量名称字符串来访问成员变量,无论私有Or公有。

可以在运行时动态的访问跟修改属性,而不是在编译时。

如果有人(很大可能是面试官)问你什么是KVC,以上的内容似乎可以应付了他的概念询问---只是似乎而已。

我们貌似完成了学习的第一步----学习了kvc 的概念。其实跟没学一样,因为所谓了解,并不是你记住了它的文字解释,而是你真的知道这是个什么东西。

为了叙述的方便,先创建一个Person类:

图2.1

这个类有两个属性,一个年龄age ,一个名字。

然后在控制器中设置person属性,完成初始化

图2.2

那我们先来实验一下前文KVC概念中叙述的功能----他是可以以字符串键形式访问对象属性。

图2.3

打印结果:

图2.4

确实,我们成功的给person对象的name属性赋值"张三"---是通过字符串键的形式。

到此有个疑问,这个过程,有没有触发person对象的set 方法?

发生以上过程的时候

图2.5

可以证明,KVC对属性的赋值,也是会触发对应属性的set 方法。

再试试用KVC来获取成员变量的值

用到的API:

图2.6

示例代码:

图2.7

打印结果:

图2.8

到此,我们算是对KVC完成最基本的了解----它可以通过变量名称字符串来访问成员变量。

或许,以上所探讨的可以回答"什么是KVC的问题",但是对于"说说你对KVC的理解"这个问题,用以上回答就显得有些捉襟见肘。

KVC对成员变量的访问是怎么工作的呢?

先来看看KVC访问成员变量的查找顺序:

我们调用方法 :

图2.9

它的查找顺序是:

1)访问setXxx:方法;

2)访问_xxx成员变量;

3)访问_isXxx成员变量;

4)访问xxx成员变量;

5) 访问isXxx成员变量。、

按照这个查找顺序逐次查找,直到找到为止,如果最后一个也找不到,就会调用

图2.10

到这里,我可以说,我掌握了KVC最基本的知识点并且了解了它以字符串访问属性值时候的查找顺序。但是,这只是KVC相关知识的冰山一角。

相关文章

  • 有关KVC(一)

    一 前言闲扯淡 一般情况下我们学习一个新的东西的过程,大概是这么一种过程:首先是怀着一种诚惶诚恐的心情接触了这个...

  • KVC

    35 KVC KVC(key-value-coding)能够让程序通过名称直接存取属性。因为与KVC有关的方法都是...

  • 【iOS面试粮食】OC语言—KVC、KVO

    本文章将记录有关 KVC、KVO的特性,如有错误欢迎指出~ KVC(Key-Value Coding)键值编码 基...

  • iOS基础黑科技:KVO(键值观察)以及KVC(键值编码)

    一、前言: 许多大神的博客都有关于KVO以及KVC的分析,在这里我整理一下自己关于KVO以及KVC的理解。求大神们...

  • iOS - 有关 KVO 和 KVC

    KVO (Key-Value Observing),俗称“键值监听”,能够用来监听对象属性的变化,也是 Objec...

  • iOS原理篇(二): KVC实现原理

    KVC实现原理 什么是 KVC KVC基本使用 KVC 原理 总结 一 、 什么是KVC KVC的全称是Key-V...

  • OC语法:KVC的底层实现

    一、KVC是什么二、怎么使用KVC三、KVC的底层实现四、KVC常见面试题 一、KVC是什么 KVC全称Key-V...

  • iOS 关于KVC的一些总结(转)

    原文:iOS 关于KVC的一些总结 本文参考: KVC官方文档 KVC原理剖析 iOS KVC详解 KVC 简介 ...

  • KVC详解

    KVC 目录结构KVC定义KVC取值和设置KVC使用keyPathKVC处理字典KVC作用 参考:iOS KVC和...

  • ios开发UI篇—Kvc简单介绍

    一、KVC简单介绍 KVC key valued coding 键值编码 KVC通过键值间接编码 补充: 与KVC...

网友评论

      本文标题:有关KVC(一)

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