一个Objective-C对象如何进行内存布局?(考虑有父类的情况)
2017-09-22 12:01
375 查看
所有
父类的方法和自己的方法都会缓存在类对象的方法缓存中,类方法是缓存在元类对象中
每一个对象内部都有一个
对象方法列表
成员变量的列表
属性列表
每个 Objective-C 对象都有相同的结构,如下图所示
根类对象就是NSObject,它的super class指针指向nil
类对象既然称为对象,那它也是一个实例。类对象中也有一个isa指针指向它的元类(meta class),即类对象是元类的实例。元类内部存放的是
转自:https://wangmeng.gitbooks.io/ios-note/content/interview_3.html
父类的成员变量和
自己的成员变量都会存放在该对象所对应的存储空间中
父类的方法和自己的方法都会缓存在类对象的方法缓存中,类方法是缓存在元类对象中
每一个对象内部都有一个
isa指针,指向他的
类对象,类对象中存放着本对象的如下信息
对象方法列表
成员变量的列表
属性列表
每个 Objective-C 对象都有相同的结构,如下图所示
Objective-C 对象的结构图 |
---|
ISA指针 |
根类(NSObject)的实例变量 |
倒数第二层父类的实例变量 |
... |
父类的实例变量 |
类的实例变量 |
类对象既然称为对象,那它也是一个实例。类对象中也有一个isa指针指向它的元类(meta class),即类对象是元类的实例。元类内部存放的是
类方法列表,
根元类的isa指针指向自己,superclass指针指向NSObject类
转自:https://wangmeng.gitbooks.io/ios-note/content/interview_3.html
相关文章推荐
- Java中如何把一组对象按照其某一个属性值进行排序?详见补充:
- iOS 面试题(1):一个 Objective-C 对象的内存结构是怎样的?
- 实例化子类的时候是否内存也实例化一个父类对象?
- 建立一个存储和处理字符串的类DelCharStr。构造函数:动态申请存储字符串所需内存空间,并且即能用指定的字符串也能用默认的值0为所声明的对象进行初始化。
- vs2005如何看到一个对象的内存分布
- JAVA内存使用--如何计算一个Java对象占用的字节数
- Android面试常见问题:如何在不发一个新版本的情况下更新App布局?
- java编程如何将对象数组按对象中的某一个属性进行排序
- objective-c中对象所有权的内存管理(关于set,get方法),以及如何使用@property来进行简易操作(九)
- 【JAVA内存】如何计算一个Java对象占用的字节数
- 如何考虑一个GIS项目——对GIS进行规…
- 如果一个Object对象可能是数组那么如何对其进行迭代
- java程序运行时对象是怎么进行放置安排? 内存是如何分配的呢?
- 如何考虑一个GIS项目——对GIS进行规…
- 如何使用VS2008命令行选项查看对象的内存布局 ?
- Java中如何把一组对象按照其某一个属性值进行排序?
- JavaScript中如何对一个对象进行深度clone
- 一个优秀的Java程序员必须了解GC的工作原理、如何优化GC的性能、如何与GC进行有限的交互,有一些应用程序对性能要求较高,例如嵌入式系统、实时系统等,只有全面提升内存的管理效率,才能提高整个应用程序
- JAVA内存使用--如何计算一个Java对象占用的字节数
- 多态继承情况下,有一个基类指针指向派生类对象,如何用它调用基类的虚函数?