有没有正确的方法来确保Swift数组副本?

时间:2016-05-21 21:46:53

标签: arrays swift pointers

例如,当通过UnsafeMutablePointer ...

操纵基础数据时
// Using Swift 2.2
import Foundation

let a = [1, 2, 3]
var aCopy = a
let aCopyPointer = UnsafeMutablePointer<Int>(aCopy)

let b = [4, 5, 6]
let bPointer = UnsafePointer<Int>(b)

let bData = NSData(bytes: bPointer, length: sizeof(Int) * b.count)
bData.getBytes(aCopyPointer, length: sizeof(Int) * b.count)

print(a) // [4, 5, 6]

1 个答案:

答案 0 :(得分:2)

值类型及其中的<div>是复制写入。因此,您可以得到您想要的东西:

Array

尽管如此,我认为在Swift Evolution中为API提供功能请求以明确请求值类型的副本是有意义的。上面的诀窍目前确实有效,但编译器往往变得更聪明,有一天你会因为一些很酷的优化而得到不同的行为。