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

原文:iOS面试题大全

  • 每一个对象内部都有一个 isa 指针,指向他的类对象,类对象中存放着本对象的:
    • 对象方法列表(对象能够接收的消息列表,保存在它所对应的类对象中)。
    • 成员变量的列表。
    • 属性列表。
    • 类对象内部也有一个 isa 指针指向元对象(meta class),元对象内部存放的是类方法列表。
    • 类对象内部还有一个 superclass 的指针,指向他的父类对象。
  • 所有父类的成员变量和自己的成员变量都会存放在该对象所对应的存储空间中。

Objective-C 对象的结构图:

  • isa 指针
  • 根类的实例变量
  • 倒数第二层父类的实例变量
  • 父类的实例变量
  • 类的实例变量
13277235-b66dbacab43f5f3f.png

猜你喜欢

转载自blog.csdn.net/weixin_33720452/article/details/87483784