Middle
Was bedeutet, dass der Werttyp (value type) zum Referenztyp (reference type) gehört?
sobes.tech KI
Antwort von AI
Der Wert des Typs wird kopiert beim Zuweisen oder Übergabe an eine Funktion, während der Wert des Referenztyps per Referenz übergeben wird, das heißt, der Zeiger auf die bestehende Instanz wird kopiert.
Werttypen (Value Types):
- Strukturen (struct)
- Aufzählungen (enum)
- Tupel (tuple)
- Die meisten Basistypen (Int, String, Bool, Array, Dictionary, Set usw.)
struct Point {
var x: Int
var y: Int
}
var p1 = Point(x: 1, y: 2)
var p2 = p1 // Der Wert von p1 wird in p2 kopiert
p2.x = 10
// p1.x ist immer noch 1, p2.x ist 10 geworden
print("p1: \(p1.x)")
print("p2: \(p2.x)")
Referenztypen (Reference Types):
- Klassen (class)
- Funktionen (closure-Funktionen)
class Coordinate {
var x: Int
var y: Int
init(x: Int, y: Int) {
self.x = x
self.y = y
}
}
var c1 = Coordinate(x: 1, y: 2)
var c2 = c1 // c2 verweist auf dasselbe Exemplar wie c1
c2.x = 10
// c1.x ist ebenfalls 10
print("c1: \(c1.x)")
print("c2: \(c2.x)")
Hauptunterschiede:
| Merkmal | Werttyp (Value Type) | Referenztyp (Reference Type) |
|---|---|---|
| Zuweisung | Kopieren des Wertes | Kopieren der Referenz (Zeiger) |
| Speicher | Wird auf dem Stack zugewiesen (bei einfachen Fällen) | Wird im Heap zugewiesen |
| Gemeinsame Nutzung | Jede Variable hat ihre eigene Kopie | Mehrere Variablen können auf dasselbe Exemplar verweisen |
| Mutabilität | Für Änderungen muss die Kopie geändert werden | Änderungen über eine Referenz sind für alle sichtbar |
In der iOS-Entwicklung werden beide Typen häufig verwendet. Wenn Sie ihre Unterschiede kennen, können Sie den passenden Typ für die jeweilige Aufgabe wählen und unerwünschte Nebenwirkungen, insbesondere bei der Arbeit mit mutierbaren Daten, vermeiden.