Sobes.tech
Junior — Middle

Wie erfolgt die Speicherzuweisung und -freigabe für Referenzdatentypen?

sobes.tech KI

Antwort von AI

In iOS werden Referenztypen (z.B. Klassen) dynamisch im Heap (Speicherbereich) zugewiesen. Wenn ein Klassenobjekt erstellt wird, weist das System ihm Speicher im Heap zu und gibt eine Referenz auf dieses Objekt zurück.

Die Speicherfreigabe erfolgt durch automatische Referenzzählung (ARC — Automatic Reference Counting). Jedes Objekt führt einen Referenzzähler — die Anzahl der aktiven Referenzen auf es. Wenn eine neue Referenz erstellt wird, erhöht sich der Zähler, und wenn eine Referenz gelöscht oder auf nil gesetzt wird, verringert er sich. Wenn der Zähler null erreicht, wird das Objekt automatisch aus dem Speicher entfernt.

Beispiel:

class Person {
    var name: String
    init(name: String) {
        self.name = name
    }
}

var person1: Person? = Person(name: "Иван") // Referenzzähler = 1
var person2 = person1 // Referenzzähler = 2
person1 = nil // Referenzzähler = 1
person2 = nil // Referenzzähler = 0, das Person-Objekt wird aus dem Speicher entfernt

Auf diese Weise muss der Entwickler den Speicher nicht manuell freigeben — ARC verwaltet dies automatisch.