• 三、__NSDictionaryI

    __NSDictionaryI 是存有多个键值对的不可变字典,其内部结构如下:

    classDiagram
    class __NSDictionaryI {
    ## 当前使用的数量
    unsigned _used : 57;
    ## 是否复制 key
    unsigned _copyKeys : 1;
    ## size 索引
    unsigned _szidx : 6;
    ## key 和 value
    id _list[0];
    }

    本节会通过下面的代码对 __NSDictionaryI 接着上一节内容进行分析

    NSDictionary *dic = @{ @"k" : @"v"@"k" : @"v2" };

    如下图所示,经过上面的一些列流程后,dic 会变成一个只持有 kv 键值对的结构体

    总结

    本文主要分享了 NSDictionary 的两个子类:__NSPlaceholderDictionary__NSDictionaryI 的构造过程进行了简单的分析。

    下一篇暂定会介绍 cow 机制。

    参考资料


    本文分享自微信公众号 - 酷酷的哀殿(kukudeaidian)。
    如有侵权,请联系 [email protected] 删除。
    本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

    04-11 14:17