美文网首页
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