

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


由于当前测试的是MAC系统因此位域查看的是x86_64架构的,可以发现类信息shiftcls占用44位,要想得到shiftcls得通过下面三步
- 右移
3位 - 左移
20位 - 右移
17位
通过nonPointerIsa地址的平移,得到的shiftcls地址和类的地址是一模一样的,这也验证了关联类和对象的是isa