内存偏移
首先我们要了解数据、指针是如何在内存中存储的,存储的位置又是什么样的。
1.通过打印结果可以看出一个数组中数据存储位置是连续的。
2.将数组数据使用一个新的指针指向它时不会改变其存储位置与内容。
3.a数组地址、a数组第一个元素地址、b针指向的地址都为同一位置。
4.指针可以通过内存偏移获取带数组中对应位置的信息。
类结构
在C++源码中可知 Class是一个objc_class的结构体指针
typedef struct objc_class *Class;
查看obje_class实现(部分)
可以一次点击进入查看实现。
1.前四个可以暂时忽略,Class superclass 为父类指针 8字节。
2.cache_t cache 按照字面意思翻译就是 以前的缓存指针与vtable。
3.class_data_bits_t内部提供一个获取class_rw_t指针的函数。声明一个class_data_bits_t 类型的结构体。
4.获取一个class_rw_t指针。
查看class_rw_t内部参数内容。打开后其中包含一些数据集合: