我已经搜索了一段时间,但找不到合理的答案。我想添加/删除一个数组中的对象,使其在第二个数组中指向第一个数组。如何在swift中制作数组的浅拷贝
class Person
{
var name:String = ""
}
var arr1:[Person] = [Person]()
let p1 = Person()
p1.name = "Umair"
let p2 = Person()
p2.name = "Ali"
arr1.append(p1)
arr1.append(p2)
var arr2 = arr1
print("\(arr1.count)") //"2\n"
print("\(arr2.count)") //"2\n"
arr1.removeFirst()
print("\(arr1.count)") //"1\n"
print("\(arr2.count)") //"2\n"
为什么更改arr1不会影响arr2。请帮我解决这个问题。
您的分配'var arr2 = arr1'实际上是'arr1'到'arr2'的一个惰性值副本,仅当两个数组中的任何一个发生了变异时才会生效。如果你真的想用_same references_跟踪一个数组,你必须看看Swift不安全的指针,我会避免。另一种方法(安全但有开销,可能忽略不计)是对'arr1'中的变化使用一些自定义属性观察器,并将变更委托给'arr2'。或者,查看[Swift reactive/binding/observing API:s](https://github.com/ReactiveKit/ReactiveKit),允许您绑定两个属性。 – dfri