OC NSObject和isa

1 篇文章 0 订阅
1 篇文章 0 订阅

1、一个NSObject对象占多少个内存?

答:系统会分配16个字节给NSOobject对象(可通过malloc函数获得);但是NSObject内部只用了8个字节空间(64bit环境下)(可通过classgetinstancesize函数获得)。

2、对象的isa指针指向哪里?

答:OC中对象分三种:1、instance(实例对象),通过alloc创建;2、class(类对象),通过class方法获取;3、mate-class(元类对象),通过runtime API中的object_getclass()获取。

instance对象在内存中存储的信息有:isa指针、其他成员变量。
class对象在内存中存储的信息有:isa指针、superclass指针、属性、对象方法、协议信息、其他成员变量信息。
mate-class对象在内存中存储的信息有:isa指针、superclass指针、类方法。

在这里插入图片描述
instance的isa指向class
class的isa指向mate-class
mate-class的isa指向基类的mate-class
class的superclass指向父类的class,如果没有父类,superclass指针为nil
mate-class的superclass指向父类的mate-class
基类的mate-class的superclass指向基类的class

instance调用对象方法的轨迹,先isa找到class,方法不存在,就通过superclass找父类
class调用类方法的轨迹,先isa找到mate-class,方法不存在,就通过superclass找父类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值