NSData方法mutableCopy()不能用作objC [... mutableCopy]?

时间:2018-01-04 21:11:16

标签: swift

斯威夫特4:

let d1 = NSData(base64Encoded: "wAEP/w==")!
let d2 = d1.mutableCopy() as! NSMutableData

d1和d2指向内存中的相同地址,但我希望mutableCopy()将作为objC [d1 mutableCopy]工作 - 例如。创建NSMutableData对象的新实例。

我真的做错了什么,或者Swift的工作方式不同?

1 个答案:

答案 0 :(得分:2)

不,d1d2未指向内存中的相同地址。它正在创建一个不同的实例。

您在操场右侧看到的不是对象的地址,而是您拥有的Data的代表。要证明它创建了不同的实例,只需尝试以下代码:

let d1 = NSData(base64Encoded: "wAEP/w==")!
let d2 = d1.mutableCopy() as! NSMutableData
d2.append(Data(base64Encoded: "wAEP")!)
print(d1)
print(d2)

如果它们是同一个实例,则d2会打印与d1

相同的内容