class 的isa指针
来源:互联网 发布:编程珠玑 第3版 pdf 编辑:程序博客网 时间:2024/05/16 02:37
查看文档可知
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
- class 的isa指针
- 神秘的 isa 指针
- isa指针的理解
- ISA指针
- isa 指针
- isa指针
- Objective-C之Meta-class和isa指针
- 验证根元类的isa指针指向自己
- MATLAB中feval、class、'function_handle'、isa、strcmp的用法
- 详解Objective-C的isa与meta-class
- ios中isa指针
- iOS中isa指针
- iOS class深入理解: 实例对象、类对象、元类和isa指针
- OC学习对象的存储细节,isa指针
- 类的本身也是一个对象----isa指针详解
- Runtime,元类,isa指针的概念及联系
- isa、class、meta-class白话总结
- OC-底层实现isa指针
- hdu 2824 The Euler function(欧拉函数)
- onActivityResult的各种"坑"
- Android开发中获取crash信息
- window 上操作 linux 系统 3 ----CURL
- Linux安装NS3
- class 的isa指针
- PopupWindow遮住虚拟键盘
- http
- 聊聊数据库中的关键字——字段、属性、列、元组、记录、表、主键、外键
- Qt加载本地html文件 并且调用JS的函数在Qt中使用
- Mysql 求时间 between 昨天 and 上个月的今天 等时间函数
- Spring 3.x jar 包详解 与 依赖关系
- delphi的Public,Private,Protected,Published作用域
- linux工作调度 at、cron