gpt4 book ai didi

ios - 为什么两个对象都自动更改了?

转载 作者:搜寻专家 更新时间:2023-11-01 05:50:31 26 4
gpt4 key购买 nike

这是我定义的类

class Person{
var name: String
var address: Address

init(name: String, address: Address){
self.name = name
self.address = address
}

}

class Address {
var city: String
var country: String
init(city: String, country: String){
self.city = city
self.country = country
}
}


var address = Address(city: "New York", country: "USA")

var person1 = Person(name: "John", address: address)

var person2 = Person(name: "Adam", address: address)

person1.address.city = "Washington"

print(person1.address.city)

print(person2.address.city)

我更改了 person1 地址的城市,但为什么 person2 的城市发生了变化,我该如何解决这个问题?

最佳答案

您正在为地址对象使用类。因此,它通过引用传递。请查看此帖子以获取有关值和引用类型的更多详细信息,https://developer.apple.com/swift/blog/?id=10 .

在您的例子中,如果您将 Address 从 Class 更改为 Struct,一切都会按您预期的那样工作,因为结构是按值传递的。

struct Address {
let city: String
let country: String
}

而且,请注意您不需要任何初始化程序。默认情况下,Struct 创建初始化程序,您可以像上面那样使用它。

关于ios - 为什么两个对象都自动更改了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36268216/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com