OC对象分为以下三种
- instance对象(实例对象)
- class对象(类对象)
- meta-class对象(元类对象)
instance对象
-instance
对象是通过类alloc出来的对象,每次调用调用alloc都会产生新的instance对象
- instance对象在内存中存储的信息包括
- isa指针
-
成员变量
image.png
class对象
NSObject *object1 = [[NSObject alloc]init];
NSObject *object2 = [[NSObject alloc]init];
Class objectClass1 = [object1 class];
Class objectClass2 = [object2 class];
Class objectClass3 = [NSObject class];
Class objectClass4 = object_getClass(object1);
Class objectClass5 = object_getClass(object2);
- ojectClass1 ~ objectClass5都是NSObject的class对象
- 它们都是同一个对象。每个类在内存中有且只有一个class对象
-
class
对象在内存中存储的信息主要包括-
isa
指针 -
superclass
指针 - 类的属性信息(@property)
- 类的对象方法信息(instance method)
- 类的协议信息(protocol)
-
类的成员变量信息(ivar)
image.png
-
meta-class
Class objectMetaClass = object_getClass([NSObject class])
- objectMetaClass是NSObject的meta-class对象(元类对象)
- 每个类在内存中有且只有一个
meta-class
对象 -
meta-class
在内存中存储的信息主要包括-
isa
指针 -
superclass
指针 - 类的类方法信息
-
![](https://img.haomeiwen.com/i5456635/cb37ea3e51800aca.png)
网友评论