我已經搜索了一段時間,但找不到合理的答案。我想添加/刪除一個數組中的對象,使其在第二個數組中指向第一個數組。如何在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