iOS 类的结构

本文探讨了iOS中类的结构,包括内存偏移的概念,数组在内存中的存储方式,以及类的组成部分如superclass、cache、class_rw_t等。通过lldb调试展示了类的继承关系,例如Person2继承Person,Person继承NSObject,揭示了类对象和元类对象的isa指针结构。
摘要由CSDN通过智能技术生成

内存偏移

首先我们要了解数据、指针是如何在内存中存储的,存储的位置又是什么样的。

1.通过打印结果可以看出一个数组中数据存储位置是连续的。

2.将数组数据使用一个新的指针指向它时不会改变其存储位置与内容。

3.a数组地址、a数组第一个元素地址、b针指向的地址都为同一位置。

4.指针可以通过内存偏移获取带数组中对应位置的信息。

类结构

在C++源码中可知 Class是一个objc_class的结构体指针

typedef struct objc_class *Class;

查看obje_class实现(部分)

 可以一次点击进入查看实现。

1.前四个可以暂时忽略,Class superclass 为父类指针  8字节。

2.cache_t cache  按照字面意思翻译就是 以前的缓存指针与vtable。

3.class_data_bits_t内部提供一个获取class_rw_t指针的函数。声明一个class_data_bits_t 类型的结构体。

4.获取一个class_rw_t指针。

查看class_rw_t内部参数内容。打开后其中包含一些数据集合:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值