在Swift 3.0中,下面的代码为thisArray[0]
提供了不同的地址,表明该数组已被深度复制。确实是这种情况,还是我的分析中遗漏了一些东西?如果让我们以同样的方式行事吗?如果允许的话可能是无关紧要的,因为它是不可变的...
var thisArray: [String]? = ["One", "Two"]
withUnsafePointer(to: &thisArray![0]) {
print("thisArray[0] has address \($0)")
}
if var thisArray = thisArray {
withUnsafePointer(to: &thisArray[0]) {
print("thisArray[0] has address \($0)")
}
}
最佳答案
相关:https://developer.apple.com/swift/blog/?id=10。
因此,如果您通过var
或let
分配现有的值类型,则将发生复制。如果您通过var
或let
分配现有的引用类型(例如类),那么您将分配一个引用。