OC对象的内存布局
2016-05-13 10:46
253 查看
一言以蔽之,属性(包括父类)都保存在对象本身的存储空间内;本类的实例方法保存在类对象中,本类的类方法保存在元类对象中;父类的实例方法保存在各级 super class 中,父类的类方法保存在各级 super meta class 中。
下图是对象的内存布局,isa 指向其类对象,其余空间保存各级的 ivar:
下图是类对象的内存布局(详细可看 runtime.h 中对 objc_class 的定义),isa 指向其元类,super_class指向其父类,此外还包含实例变量列表、方法列表、协议列表:
ps: 实例变量的定义如下,它包含了变量的名称、类型、偏移等,但却不包括变量的值——值在对象而非类中:
下图是对象的内存布局,isa 指向其类对象,其余空间保存各级的 ivar:
下图是类对象的内存布局(详细可看 runtime.h 中对 objc_class 的定义),isa 指向其元类,super_class指向其父类,此外还包含实例变量列表、方法列表、协议列表:
ps: 实例变量的定义如下,它包含了变量的名称、类型、偏移等,但却不包括变量的值——值在对象而非类中:
struct objc_ivar { char *ivar_name OBJC2_UNAVAILABLE; char *ivar_type OBJC2_UNAVAILABLE; int ivar_offset OBJC2_UNAVAILABLE; #ifdef __LP64__ int space OBJC2_UNAVAILABLE; #endif }
相关文章推荐
- android游戏开发 深度解析利用位图绘制rpg地图
- 分布式任务框架elastic-job 学习笔记
- 动态sql语句和动态传入参数个数
- heightcharts
- 2016/5/13 低位沿着5日压力线下跌中的各种图形——!!图形非常有长期参考价值
- scrapy 1.0.3版本 Selenium Phantomjs Downloader Middleware
- 欧几里德距离、欧拉距离
- CentOS下ftp服务器配置andWin7下cuteftppro连接
- IOS开发学习-UIScrollView的下拉刷新及单向滚动4
- JAVA HashMap 的工作原理(译)
- django 消息模块 (messages ) 的使用
- iphone6 plus 为什么打印出的宽度是375
- 转:怎么使用github(通俗易懂版)
- SVN服务器搭建和使用以及冲突解决、用户密码修改
- java实现希尔排序
- Firefox 无法保证您在 上的数据安全性,因为它使用 SSLv3,一个目前安全性欠佳的安全协议。
- 使用pano2vr生成html5全景页面
- vs2015 asp.net web项目 绑定ip地址无效的问题
- 关于block使用的5点注意事项
- Mac OS中配置环境变量及vim的简单使用