Arrays Swift:迭代数组字典而不复制任何内容

Arrays Swift:迭代数组字典而不复制任何内容,arrays,swift,Arrays,Swift,我有一个类似于[String:[MyClass]]的字典,我希望访问字典中每个数组中的每个值,但不进行任何复制 我可以在中为..使用吗?或者可能是forEach方法完成了这项工作?您可以在中使用for..正常迭代,而不用担心值复制机制。如果您对引擎盖下发生的事情感兴趣,请查看Swift数组采用的写时拷贝行为 其要点是:只有在修改该数组时,才会在内存中创建该数组(或实现写时复制的任何其他数据结构)的副本。如果不发生变异,两个数组实例仍将使用相同的底层内存。在“访问每个值”的哪一部分中,您认为您会复

我有一个类似于
[String:[MyClass]]
的字典,我希望访问字典中每个数组中的每个值,但不进行任何复制


我可以在中为..使用
吗?或者可能是
forEach
方法完成了这项工作?

您可以在
中使用
for..正常迭代,而不用担心值复制机制。如果您对引擎盖下发生的事情感兴趣,请查看Swift数组采用的写时拷贝行为


其要点是:只有在修改该数组时,才会在内存中创建该数组(或实现写时复制的任何其他数据结构)的副本。如果不发生变异,两个数组实例仍将使用相同的底层内存。

在“访问每个值”的哪一部分中,您认为您会复制任何内容…?复制总是存在的(这是值的本质;无论类型如何,这都是真的,事实上,在所有具有任何类型值的语言中都是真的)。但不清楚你想解决什么问题。这里的复制将是最小的。如果您正在迭代字典,请在
中为…使用
。当然不是。它不会复制整个数组内容,
for…in
甚至不会创建数组指针的副本。自然地编写代码。请注意,如果您开始修改这些数组,您肯定会因为快速复制而遇到复杂的性能问题,但事实并非如此。事实上比这更复杂。问题是当你说“没有任何复制”的时候,没有复制你几乎什么都做不了。“x=y+7”涉及复制
x=array.count
涉及复制。问题是你复制了多少。