类的底层探究

2021-06-21  本文已影响0人  MrHardy

今天我们探究一下类的底层是什么实现的?

首先我们知道object_class 继承与objc_object,两者皆是底层代码

上代码

下面我们探究一下成员变量(基本数据类型)/属性/实例变量 的底层实现是什么样的?

通过指令clang -rewrite-objc main.m -o main.cpp  生成cpp文件

内存平移

接下来再看下面属性定义的区别

注意看上述结果 不同定义 是否有set方法字样

 atomic, copy, mutableCopy等都用到reallySetProperty方法

其他扩展:

isa里面的存储的是 类的信息、是否在释放、引用计数、weak

对象isa和类不一样

类isa和元类一样

看下isKindOfClass的底层实现

tcls 为当前的根元类,根元类的父类为NSObject

上面的代码真的是走了isKindOfClass 吗?

现在设为为汇编模式,揭开真相

实际走的是objc_opt_isKindOfClass,哦豁,是不是掉坑里了......

上一篇 下一篇

猜你喜欢

热点阅读