isa推导class

通过案例验证了类和对象进行关联是通过isa来进行的,在案例中对isaISA_MASK就可以得出类的地址,由于isa默认是nonPointerIsa,而非纯的isa指针数据是存储在bits里面的,在64位的地址段里不止存储了类的地址信息,还存储类别的和类相关的信息,而ISA_MASK的作用就是在64位的地址段里取isa关联的类,可能这个ISA_MASK不够形象接下来通过下面的案例从isa推导class

由于当前测试的是MAC系统因此位域查看的是x86_64架构的,可以发现类信息shiftcls占用44位,要想得到shiftcls得通过下面三步

  1. 右移3
  2. 左移20
  3. 右移17
    通过nonPointerIsa地址的平移,得到的shiftcls地址和类的地址是一模一样的,这也验证了关联类和对象的是isa
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容