在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



因此,如果您通过varlet分配现有的值类型,则将发生复制。如果您通过varlet分配现有的引用类型(例如类),那么您将分配一个引用。

10-08 14:02