Sobes.tech
Junior

Was ist der Unterschied zwischen Referenztypen und Wertetypen?

sobes.tech KI

Antwort von AI

Value Types (Werttypen) werden beim Zuweisen oder Übergeben an eine Funktion kopiert. Jede Instanz hat ihre eigene Kopie der Daten.

Reference Types (Referenztypen) werden beim Zuweisen oder Übergeben an eine Funktion als Referenz auf die gleiche Dateninstanz übertragen. Änderungen an den Daten über eine Referenz wirken sich auf alle anderen Referenzen auf diese Instanz aus.

Merkmal Werttyp (Value Type) Referenztyp (Reference Type)
Verhalten bei Zuweisung/Übergabe Kopieren Referenzübertragung
Speicherort Stack (Heap) Heap (Stack)
Speicherverwaltung Automatisch (über den Stack) Automatisch (ARC)
Beispiele in Swift struct, enum, tuple class, func, closure
// Beispiel Werttyp (Struct)
struct Point {
    var x: Int
    var y: Int
}

var p1 = Point(x: 1, y: 2)
var p2 = p1 // p2 erhält eine Kopie von p1
p2.x = 10   // Änderung an p2 beeinflusst p1 nicht
print("p1: \(p1)") // p1: Point(x: 1, y: 2)
print("p2: \(p2)") // p2: Point(x: 10, y: 2)

// Beispiel Referenztyp (Klasse)
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 referenziert dasselbe Objekt wie c1
c2.x = 10   // Änderung an c2 wirkt sich auf c1 aus, da beide auf dasselbe Objekt zeigen
print("c1: \(c1.x)") // c1: 10
print("c2: \(c2.x)") // c2: 10