我知道Array
和ContiguousArray
之间存在一些相关的问题。
然而,答案集中在如何使用它们,而不是它们自己。
在官方文档中,他们说
ContiguousArray类型是一个专用数组,它始终将其元素存储在连续的内存区域中。这与Array形成对比,Array可以将其元素存储在连续的内存区域或NSArray实例(如果其Element类型是类或@objc协议)。
因此,在Array
中,如果元素是类或@objc协议,则元素可能位于连续区域或NSArray
实例中。我认为Array
只有对象的指针。所以,我不理解一个连续区域的含义。
NSArray
与Array
有何关联? Array
只是NSArray
的包装吗?
有人可以解释一下吗?
编辑:
当我发布问题时,我对它有些疑惑。
据推测ContiguousArray
没有指针?因为文档说ContiguousArray
总是将其元素存储在一个连续的区域中。
答案 0 :(得分:1)
Array
和ContiguousArray
本身没有参考语义。如果将值类型的实例存储在其中,则数组的元素是原始实例的正确副本。是否有时使用指针"引擎盖下#34;为了优化(或桥接到Objective-C)只是一个实现细节,不是预期的编程模型的一部分,因此通常不应该推理。
但是当低级性能是时,ContiguousArray
可以保证元素在内存中连续布局,就像C数组一样。常规Array
实例在可能的情况下(当其元素是枚举或结构时)提供相同的优化。在其他情况下,它确实可以表现为NSArray
的包装。