Swift 数组底层探究
数组的协议结构
- Sequence 序列
- Collection 集合
- RangeReplaceableCollection 可以做区间替换的集合
- Array 数组
Sequence
- 一个序列(sequence)代表的是一系列具有相同类型的值,你可以对这些之进行迭代。
IteratorProtocol
- Sequence 通过一个迭代器来提供对元素的访问。迭代器每次产生一个序列的值。
- 并且当便利序列时对遍历状态进行管理。
- 当序列被耗尽时,next() 应该返回 nil。
定义自己的 Sequence
Collection
- 一个Collection是满足下面条件的 Sequence
- 稳定的 Sequence,能够被多次遍历并且保持一致
- 除了线性遍历意外,集合的元素也可以通过下边索引的方式被获取到
- 和 Sequence不同,Collection类型不能是无限的。
Array的迭代器
Array的下标访问
Array的buffer
_ContiguousArrayBuffer
_ContiguousArrayBuffer的getElement
UnsafeMutablePointer的下标操作
问题:endIndex 和 count
苹果官方推荐以O(1)返回endIndex,endIndex不一定为 count类型