您的位置:首页 > 移动开发 > Objective-C

一个Objective-C对象如何进行内存布局?(考虑有父类的情况)

2017-09-22 12:01 375 查看
所有
父类的
成员变量和
自己的
成员变量都会存放在该对象所对应的存储空间中

父类的方法和自己的方法都会缓存在类对象的方法缓存中,类方法是缓存在元类对象中

每一个对象内部都有一个
isa指针
,指向他的
类对象
,类对象中存放着本对象的如下信息

对象方法列表

成员变量的列表

属性列表

每个 Objective-C 对象都有相同的结构,如下图所示

Objective-C 对象的结构图
ISA指针
根类(NSObject)的实例变量
倒数第二层父类的实例变量
...
父类的实例变量
类的实例变量
根类对象就是NSObject,它的super class指针指向nil

类对象既然称为对象,那它也是一个实例。类对象中也有一个isa指针指向它的元类(meta class),即类对象是元类的实例。元类内部存放的是
类方法
列表,
根元类的isa指针指向自己,superclass指针指向NSObject类




转自:https://wangmeng.gitbooks.io/ios-note/content/interview_3.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐