对象中的前8字节就是isa指针
来源:互联网 发布:计算机技术与软件 证书 编辑:程序博客网 时间:2024/06/11 02:05
内容来源:http://bbs.itheima.com/thread-137894-1-1.html
查看文档可知
Discussion
The isa instance variable of the new instance is initialized to a data structure that describes the class; memory for all other instance variables is set to 0.
isa实例变量指向一个描述类的结构体数据。而所有其它实例变量都会被设置为0值。
上一次看内存知道对象指针加8才是自己声明的实例变量的地址。前8个字节一直没有搞清楚是什么。多谢论坛中fantacyleo的指点。其实对象开始8字节就是isa指针。那么他到底是不是呢,我做了一个简单的小程序,输出isa的地址。
通过观察isa起始地址和对象的起始地址值是一样的,而isa在NSObject中被声明为一个指针,MAC OS系统是64位的,所以指针也就是64的。即占8字节空间。
所以由此可以判断对象的前8个字节就是isa指针。
isa在NSObject.h中声明:
@interface NSObject <NSObject> {
Class isa OBJC_ISA_AVAILABILITY;
}
而Class在objc.h中又被声明为:
/// An opaque type that represents an Objective-C class.
typedef struct objc_class *Class;
所以isa是就指向 objc_class结构体的指针。 而后4字节就是person类实例变量age所占用的内存空间;
再观察person类的子类Student对象中实例变量在内存中是怎么分布的
观察发现同样前8字节是isa指针,紧随其后依次存放的是实例变量age和score
0 0
- 对象中的前8字节就是isa指针
- oc语言中的isa指针以及其面向对象语言的设计原理
- iOS对象内存结构中的 isa 指针是用来做什么的?
- iOS 面试题(2):对象内存结构中的 isa 指针是用来做什么的?
- oc中的isa指针以及runtime
- ISA指针
- isa 指针
- isa指针
- OC学习对象的存储细节,isa指针
- 类的本身也是一个对象----isa指针详解
- ios中isa指针
- class 的isa指针
- 神秘的 isa 指针
- isa指针的理解
- iOS中isa指针
- iOS class深入理解: 实例对象、类对象、元类和isa指针
- OC-底层实现isa指针
- C++中的对象指针
- SQL总结(一)基本查询
- [letecode java ] Sort Colors
- 人际关系的确是一项资产
- Xcode 安装插件
- 安装nagios后,通过Apache访问nagios不能正常访问,总是下载index.php
- 对象中的前8字节就是isa指针
- git学习总结
- 使用JDBC处理MySQL大数据
- 如何解决Windows 10 下 sublime text编辑器 package control 安装失败的问题
- linux学习书籍和路线推荐
- 导入即可SpingMVC+MyBatis简单权限管理系统,带数据库
- 拖放转换 批量转换 xls 2 txt
- 初识html总结
- html js 输入日期输出星期