OC对象本质
本文主要对OC语言进行阅读和分析的笔记
说起OC那么接触到的第一个对象应该就是NSObject了,那么NSObject是怎么实现的呢?点进去头文件可以看到下面的代码
1 | @interface NSObject { |
可以看到NSObject只有一个成员isa, 通过下面命令看到OC转成c++看看:
1 | xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc <OC源文件> -o <输出的cpp文件> |
翻开cpp文件可以看见NSObject对象转成了下面的代码”
1 | struct NSObject_IMPL { |
看来一个NSObject对象就是一个结构体,且里面也有一个成员isa,那么接下来看下isa是什么
1 | typedef struct objc_class *Class; |
可以看出isa的类型是一个结构体指针