Sobes.tech
Junior — Middle

Was ist der Unterschied zwischen Referenz- und Werttypen in der Programmiersprache Swift?

sobes.tech KI

Antwort von AI

In Swift werden Datentypen in Werttypen (value types) und Referenztypen (reference types) unterteilt.

  • Werttypen (z.B. struct, enum, Tupel) werden beim Zuweisen oder Übergeben an eine Funktion kopiert. Das bedeutet, dass jede Variable ihre eigene unabhängige Kopie der Daten hat.

  • Referenztypen (Klassen class) übertragen beim Zuweisen oder Übergeben eine Referenz auf dasselbe Objekt im Speicher. Änderungen über eine Referenz sind durch andere sichtbar.

Beispiel:

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
p2.x = 10
print(p1.x) // 0, da p2 eine Kopie von p1 ist

var person1 = Person(name: "Alice")
var person2 = person1
person2.name = "Bob"
print(person1.name) // Bob, da person2 und person1 auf dasselbe Objekt verweisen

Daher ist der Unterschied, dass Werttypen kopiert werden, während Referenztypen eine Referenz auf dasselbe Objekt übertragen.