let d1 = NSData(base64Encoded: "wAEP/w==")!
let d2 = d1.mutableCopy() as! NSMutableData
d1和d2指向内存中的相同地址,但我希望mutableCopy()将作为objC [d1 mutableCopy]工作 - 例如。创建NSMutableData对象的新实例。
我真的做错了什么,或者Swift的工作方式不同?
答案 0 :(得分:2)
不,d1
和d2
未指向内存中的相同地址。它正在创建一个不同的实例。
您在操场右侧看到的不是对象的地址,而是您拥有的Data
的代表。要证明它创建了不同的实例,只需尝试以下代码:
let d1 = NSData(base64Encoded: "wAEP/w==")!
let d2 = d1.mutableCopy() as! NSMutableData
d2.append(Data(base64Encoded: "wAEP")!)
print(d1)
print(d2)
如果它们是同一个实例,则d2
会打印与d1