我有这样的课程设置。在我的方法中,我希望根据传递的参数使用特定的数组。我的问题是:“array”变量是选定数组的副本还是对它的引用?如果是副本,如何将引用传递给数组?我不想复制它,因为它很长。
我听说在Swift 1中,数组只在需要时被复制(编译器决定何时)。斯威夫特2现在怎么样了?
class ... {
private var currentVertexes = [CCVertex]()
private var mainVertexes : [CCVertex]!
private var leftVertexes : [CCVertex]!
private var rightVertexes : [CCVertex]!
private var topVertexes : [CCVertex]!
private var bottomVertexes : [CCVertex]!
...
internal func method(var factor: Float) {
let array = factor < 0.0 ? leftVertexes : rightVertexes
...
}
最佳答案
数组是值类型,但当您仅以只读方式访问它们时,请使用“写时复制”来防止不必要的复制(请参见SwiftDocs)
因此,如果您的方法的其余部分只从数组中读取,那么您就不需要担心拷贝(不管CVVertex
是结构还是类)。
关于ios - Swift 2-设置期间是否要复制数组?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33763175/