例如,当通过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]
答案 0 :(得分:2)
值类型及其中的<div>
是复制写入。因此,您可以得到您想要的东西:
Array
尽管如此,我认为在Swift Evolution中为API提供功能请求以明确请求值类型的副本是有意义的。上面的诀窍目前确实有效,但编译器往往变得更聪明,有一天你会因为一些很酷的优化而得到不同的行为。