Hier sind die Klassen IWarum wurden beide Objekte automatisch geändert?
definiertclass 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)
ich die Stadt person1 Adresse geändert, aber warum hat person2 Stadt zu ändern, und wie winde ich das Problem?
Als James darauf hinweist, Klassen übergeben Variablen durch Verweis in Swift. Für das Verhalten, das Sie wünschen, ändern Sie Ihre Klassen in Strukturen, die Variablen nach Wert übergeben. – beyowulf