OC代码底层实现都是c/c++,oc的类和对象都是基于c/c++的结构体实现的
1.nsobject的底层实现就是一个结构体,class其实就是一个指针
2.NSObject对象obj的结构体只有一个成员:isa指针,指针在64位架构中占8个字节,系统在为对象分配内存空间时,最小为16个字节
3.内存对齐:
前面的地址必须是后面的地址整数倍,不是就补齐。
整个结构体的地址必须是最大字节的整数倍。
4.oc对象分类
实例对象: instance alloc 出来的对象 包括 isa指针跟其他成员变量
类对象: class 通过class创建或者 runtime object_getclass得到的对象
(每个类在内存中有且只有一个class对象)
类对象在内存中存储的信息包括:
1、isa指针
2、superClass指针
3、类的属性信息(@property),类的成员变量信息(ivar)
4、类的对象方法信息(instance method),类的协议信息(protocol)
元类对象:特殊的类对象 用途不一样。保存的类的方法