笔记02 OC 对象
7 oc 对象分为三种
1 instance 实例对象 有isa 指针(指向类对象)和 其他成员变量
3 meta-class 元类对象 元类对象是用来描述类的(获取方式 为 object_getClass([NSObject class]) ) 包含 isa 指针 superclass指针 类的类方法信息
1.Class objc_getClass(const char *aClassName)
1> 传入字符串类名
2> 返回对应的类对象
2.Class object_getClass(id obj)
1> 传入的obj可能是instance对象、class对象、meta-class对象
2> 返回值
a) 如果是instance对象,返回class对象
b) 如果是class对象,返回meta-class对象
c) 如果是meta-class对象,返回NSObject(基类)的meta-class对象
3.- (Class)class、+ (Class)class
1> 返回的就是类对象
实例对象 isa 指向 class 对象 class 的isa 指向 对应的 meta-class,所有的 meta-class 的isa 直接指向最基础的基类的 meta-class
instatnce isa -> class isa -> meta-class
如果 A 类 继承自 B B 继承自 C
那么 A class 的superClass 指向 B class,B class 的superClass 指向 C class 对象
那么 A 的元类 的superClass 指向 B 的元类,B 的元类 的superClass 指向 C 的元类 对象
基类的 meta-class 的 superclass 指向 基类的 meta-class 对应的 class 对象
image.png8 构建 和 OC对象 相同结构的结构体可以 直接把 OC 对象强行 (通过 __bridge struct )转为结构体,可以通过结构体属性访问查看 oc 对象隐藏的属性和方法
Ma8 窥探struct objc.class的结构.png