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

所有父类的成员变量和自己的成员变量都会存放在该对象所对应的存储空间中.

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

1)对象方法列表(对象能够接收的消息列表,保存在它所对应的类对象中)

2)成员变量的列表

3)属性列表

它内部也有一个isa指针指向元对象(meta class),元对象内部存放的是类方法列表,类对象内部还有一个superclass的指针,指向他的父类对象。

一个objc对象如何进行内存布局?(考虑有父类的情况)_第1张图片

1)根对象就是NSobject,它的superclass指针指向nil。

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

如图:

一个objc对象如何进行内存布局?(考虑有父类的情况)_第2张图片

你可能感兴趣的:(一个objc对象如何进行内存布局?(考虑有父类的情况))