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.