Sobes.tech
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.