码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2017-09-22 13:04:04      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:content   view   get   存储空间   class   books   nsobject   元类   alt   

  • 所有父类的成员变量和自己的成员变量都会存放在该对象所对应的存储空间中
  • 父类的方法和自己的方法都会缓存在类对象的方法缓存中,类方法是缓存在元类对象中
  • 每一个对象内部都有一个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

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

标签:content   view   get   存储空间   class   books   nsobject   元类   alt   

原文地址:http://www.cnblogs.com/huangzs/p/7574180.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!