OC对象的分类

OC对象主要可以分为三种

  • instance对象 实例对象
  • class对象 类对象
  • meta-class对象 元类对象

instance对象

instance对象就是通过类alloc出来的对象 每次调用alloc都会产生新的instance对象

NSObject *obj1 = [[NSObject alloc] init];
NSObject *obj2 = [[NSObject alloc] init];

obj1 obj2是NSObject的的instance对象
它们是不同的两个对象 分别占据着两块不同的空间

instance对象在内存中存储的信息包括

  • isa指针
  • 其他成员变量
    在这里插入图片描述
    isa指针始终在instance对象内存的最前面

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);
	
	    NSLog(@"%p %p %p %p"
          , objectClass1, objectClass2, objectClass3, objectClass4);

一个类的类对象是唯一的 一个类的类对象在内存中只有一份
在这里插入图片描述
class对象在内存中存储的信息有

  • isa指针
  • superclass指针
  • 类的属性信息 类的对象方法信息
  • 类的协议信息 类的成员变量信息

meta-class对象

	Class objectMetaClass = object_getClass([NSObject class]);
	NSLog(@"%p", objectMetaClass);
	/将类对象当作参数传入 获得元类对象
	    Class objectClass1 = [object1 class];
    Class objectMetaClass2 = object_getClass(objectClass1);
    NSLog(@"%p", objectMetaClass2);

在这里插入图片描述
每个类在内存中只有一个meta-class对象
meta-class对象和class对象的内存结构是一样的 但是用途不一样 在内存中存储的信息主要包括

  • isa指针
  • superclass指针
  • 类的类方法信息
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

waxuuuu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值