三、__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
会变成一个只持有 k
和 v
键值对的结构体
总结
本文主要分享了 NSDictionary 的两个子类:__NSPlaceholderDictionary
和 __NSDictionaryI
的构造过程进行了简单的分析。
下一篇暂定会介绍 cow
机制。
参考资料
本文分享自微信公众号 - 酷酷的哀殿(kukudeaidian)。
如有侵权,请联系 [email protected] 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。