如果我只是更改属性而不是替换对新对象的引用,则不会发生这种情况。
这是一个类 Person ,它是一种引用类型,
class Person {
var firstName: String
var lastName: String
init(firstName: String, lastName: String) {
self.firstName = firstName
self.lastName = lastName
}
}
这是人的一个实例,
var someone = Person(firstName: "Johnny", lastName: "Appleseed")
然后我创建一个包含Person类型值的数组
var lotsOfPeople = [someone, someone, someone]
我想 lotsOfPeople 包含3个对某人的引用。 但是,如果我在lotsOfPeople中更改第三个值,
lotsOfPeople[2] = Person(firstName: "Lucy", lastName: "Swift")
某人本身不变。
print(someone.firstName) // Johnny
我认为这意味着 lotsOfPeople [2] 不是对某人的引用。 这怎么可能发生?
答案 0 :(得分:4)
问题是您要替换../../build/mv/task/mvtask1d pic.json
上的引用以指向新对象。这就是为什么原始lotsOfPeople[2]
不变的原因。
如果您使用了Person
,它将改变。
或者这样做:
lotsOfPeople[2].firstName = "Lucy"
然后您还将看到原始更改。