iOS

问题:KVC的底层实现原理

2020-05-11  本文已影响0人  姜小舟

KVC主要通过isa来实现其内部查找定位的。默认的实现方法由NSOject提供isa指针, 如其名称所指,(就是is a kind of的意思), 指向分发表对象的类. 该分发表实际上包含了指向实现类中的方法的指针, 和其它数据。

具体主要分为三大步
或者这么说:
[object setValue:@"13123" forKey:@"uuid"];

就会被编译器处理成:
// 1.首先找到对应sel
SEL sel = sel_get_ uuid("setValue:forKey:");
// 2.根据object->isa找到sel对应的IMP实现指针
IMP method = objc_msg_lookup (object->isa,sel);
// 3.调用指针完成KVC赋值
method(object, sel, @"13123", @"uuid");
上一篇下一篇

猜你喜欢

热点阅读