举例 0xa000000007070703
这个指针是最初没有想到的
环境
![](https://img.haomeiwen.com/i10394500/b4b92e0df9badff8.png)
![](https://img.haomeiwen.com/i10394500/bc6f1027173f0052.png)
![](https://img.haomeiwen.com/i10394500/1456d9bb8c8678af.png)
这是时候报错 NSTaggedPointerString 找不到方法 replace...
1、标识符 最高四位
2、数据内容 中间部分
3、数据信息 最低八位
0xa000000007070703
Isa 0xa
数据内容 \x70 \x70 \x70
数据长度是3
这个是和NSNumber的使用方式一样的设计
![](https://img.haomeiwen.com/i10394500/4037a155b16c51ee.png)
打印 0xb0000000000000a2
能够阅读 Oxb 就是类型 \a翻译成数字就是10 2就是长度为2
总结
苹果从推出64位处理器之后为了提升效率,采用了这种虚拟指针的技术,对于这种处理因为苹果既要维护生命周期还要维护引用计数,过多的逻辑造成了不必要的效率缺少,因此采用了这种虚拟指针
网友评论