NSMutableArray的底层原理
_used 是计数的意思
_list 是缓冲区指针
_size 是缓冲区的大小
_offset 是在缓冲区里的数组的第一个元素索引
数据结构
正如你会猜测的,__NSArrayM 用了环形缓冲区 (circular buffer)。这个数据结构相当简单,只是比常规数组或缓冲区复杂点。环形缓冲区的内容能在到达任意一端时绕向另一端。
除非缓冲区满了,否则在任意一端插入或删除均不会要求移动任何内存。
任意一端插入或者删除,只是修改offset参数,不需要移动内存,
我们访问的时候只是不和普通的数组一样index多少就是多少,这里会计算加上offset之后处理的值取数据, 而不是插入头和尾巴的时候,环形结构会根据最少移动内存指针的方式插入,
网友评论