美文网首页
iOS tagged pointer

iOS tagged pointer

作者: 粗暴不简单 | 来源:发表于2021-04-04 15:17 被阅读0次

为了节省内存和提高执行效率,所以有tagged pointer这玩意儿。tagged pointer可能会应用于NSNumberNSStringNSDateNSIndexPath

出现问题

20190901232757185.jpg

这张图以NSNumber为例,占用空间翻倍了,所以想搞些优化,再看看优化方案


20190902000459522.jpg

这么一搞省了很多空间

分析tagged pointer

tagged pointer占64位
高4位:1位标识+3位类型
中间: 存储对象的值(string用ASCII码表示)
低四位:具体看这个对象是什么类型,比如NSString时为length,NSnumber则为里面数的类型Int为2、long为3、float为4、double为5。

Tagged Pointer.png
  • tagged pointer直接在栈里面,节省了内存,提高的访问效率
  • tagged pointer局限性很明显,空间就这么大,中间56位装不了或者没法用的时候(比如string内容有汉字无法用ASCII码表示),就得老老实实用之前的方案
  • tagged pointer本质上已经不是原本说的对象了,只不过外面他还表现为nsnumber,nsstring...

相关文章

网友评论

      本文标题:iOS tagged pointer

      本文链接:https://www.haomeiwen.com/subject/raklkltx.html