我认为inout会让你传入一个引用(这是准确吗?),然后如果引用多次更改,就像你对数组所做的那样,那么数组就不需要多次复制了,因为它现在是参考类型?
答案 0 :(得分:1)
swift中输入输出参数的语义与通过引用传递值不同。以下是您传递输入输出参数时发生的情况:
输入输出参数传递如下:
- 调用该函数时,将复制参数的值。
- 在功能正文中,副本被修改。
- 当函数返回时,副本的值将分配给原始参数。
醇>此行为称为copy-in copy-out或按值调用结果。例如,当计算属性或具有观察者的属性作为输入输出参数传递时,其getter作为函数调用的一部分被调用,其setter作为函数返回的一部分被调用。
数组是swift中的 value 类型,因此在这种情况下完全复制了它。当然,swift编译器可以对其进行优化,但无论如何,您都可以保证看到完全相同的行为。
答案 1 :(得分:0)
如果要通过引用传递数组并允许被调用函数快速修改元素 ,则可以选择显式创建NSMutableArray,或创建实例具有数组的类他们的单身成员。