Junior — Middle
Verwenden alle Datentypen, die Werte speichern, unbedingt den Kopiermechanismus bei Zuweisung oder Übergabe?
sobes.tech KI
Antwort von AI
Nicht alle Datentypen verwenden beim Zuweisen oder Übertragen den Kopiermechanismus. In iOS (und Swift) unterscheiden wir zwischen Werttypen (value types) und Referenztypen (reference types).
- Werttypen (z.B. Strukturen, Aufzählungen, Basistypen wie Int, Double) werden beim Zuweisen oder Übertragen kopiert — eine neue Kopie der Daten wird erstellt.
- Referenztypen (z.B. Klassen) kopieren nur die Referenz auf das Objekt, nicht das Objekt selbst. Somit können mehrere Variablen auf dasselbe Objekt im Speicher zeigen.
Beispiel in Swift:
struct Point { var x: Int; var y: Int }
class Person { var name: String
init(name: String) { self.name = name }
}
var p1 = Point(x: 0, y: 0)
var p2 = p1 // Wert wird kopiert
p2.x = 10
print(p1.x) // 0
var person1 = Person(name: "Alice")
var person2 = person1 // Referenz wird kopiert
person2.name = "Bob"
print(person1.name) // Bob
Daher gilt: Der Kopiermechanismus wird nur bei Werttypen angewendet, während Referenztypen Referenzübertragung verwenden.