KVC实现原理简介

简介:

 KVC,全称:Key-Value-Coding。

  KVC运用了isa-swizzling技术。isa-swizzling就是类型混合指针机制KVC主要通过isa-swizzling来实现其内部定位查找。isa指针(is a kind of),指向维护分发表的对象的类。该分发表实际上包含了指向实现类中的指针和其他数据。

比如:8

[dic setVaule:@"zhangsan" forKey:@"name"];

当运行的时候就会被编译成:

SEL sel = sel_get_uid("setValue:forKey:");
IMP method = objc_msg_lookup(dic->isa,sel);
method(dic,sel,@"zhangsan",@"name");

其中,sel_get_uid函数是通过方法名得到一个方法选择器。

objc_msg_lookup:如果我们想用OC运行函数得到一个IMP,就可以使用objc_msg_lookup函数 。

这样KVC内部实现就可以这样描述了:

一个对象在调用setValue的时候,

1、根据方法名找到运行方法的时候所需要的环境参数。

2、他会从自己isa指针结合环境参数,找到具体的方法实现接口。

3、再直接查找得到的具体的方法实现。

相关文章
|
1月前
|
网络协议 小程序 测试技术
ChaoBlade 的实现原理
【4月更文挑战第6天】ChaoBlade 的实现原理
57 3
ChaoBlade 的实现原理
|
9月前
|
数据采集 算法 安全
GSI服务的实现原理是什么?
答:通过光算科技自研的GPC爬虫池系统。 GSI服务,全称Google Search Infrastructure服务,是Google用来处理和返回用户搜索查询结果的基础设施。 这个基础设施包括了庞大的硬件和软件系统,通过复杂的算法和技术,它可以在瞬间处理数亿的搜索查询,返回相关且有价值的结果。 下面,我们将深入探讨GSI服务的实现原理。
117 0
GSI服务的实现原理是什么?
|
12月前
|
编译器 Linux C语言
函数重载及简述其实现原理
本文将讲述,函数重载及简述其实现原理。
99 0
|
SQL PHP 数据库
PDOstatement对象是干什么的?底层原理是什么?
PDOstatement对象是干什么的?底层原理是什么?
184 0
|
存储 搜索推荐 API
iOS-底层原理 22:KVC 底层原理
iOS-底层原理 22:KVC 底层原理
127 0
iOS-底层原理 22:KVC 底层原理
|
存储 调度 iOS开发
runloop的基本概念和实现原理
runloop的基本概念和实现原理
327 0
runloop的基本概念和实现原理
|
编译器 iOS开发
iOS-底层原理 23:KVO 底层原理
iOS-底层原理 23:KVO 底层原理
153 0
iOS-底层原理 23:KVO 底层原理
|
存储 API iOS开发
iOS底层原理:KVC分析(一)
KVC全称Key-Value Coding,俗称键值编码。它是一种通过字符串描述符而不是通过调用访问方法或者直接使用实例变量的非直接的访问对象属性的机制。在iOS中,NSObject、NSArray、NSDictionary等类使用这种机制并采用分类的形式为自身拓展了KVC的能力。
iOS底层原理:KVC分析(一)