本文翻译自 Exposing NSMutableArray,译文原地址为NSMutableArray 原理揭露。
以下为译文:
我总好奇 NSMutableArray 内部是如何工作的。别误会,不可变数组确实提供了极大的便利。它们不仅线程安全,在对它们进行拷贝时也是完全自由的。但这些改变不了它们死板的事实——它们的内容不可被修改。我发现实际内存操作的细节很迷人,这也是我这篇文章聚焦于可变数组的原因。
当我在说明我是如何研究 NSMutableArray 的整个过程时,这篇文章会得相当具有技术性。会有一整个章节讨论 ARM64 汇编 (the ARM64 assembly),所以当你感觉到无聊时,不要犹豫,直接跳过那部分内容。一旦我们讨论完那些底层细节,我会展示关于这个类的隐藏特性。
NSmutableArray 的实现细节之所以私有是有原因的。得益于其底下的子类 (underlying subclasses) 和 ivar 布局 (ivar layouts),还有算法和数据结构的支撑,它们几乎可以随时改变。无视掉那些注意事项,我们值得去掀开 NSMutableArray 的引擎盖窥视一番,搞清楚它是如何工作的和能期望它做什么。接下来的学习基于 iOS 7.0 SDK。
和往常一样,你可以在我的GitHub上找到接下来的 Xcode 项目。