oc对象本质

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)

元类对象:特殊的类对象  用途不一样。保存的类的方法

你可能感兴趣的:(oc对象本质)