Junior — Middle
Was ist der Unterschied zwischen den Referenztypen Strong und Weak in der Speicherverwaltung und im Referenzmodell?
sobes.tech KI
Antwort von AI
Strong-Verweis ist ein normaler starker Verweis auf ein Objekt, der den Referenzzähler (Retain Count) dieses Objekts erhöht. Solange mindestens ein starker Verweis besteht, wird das Objekt nicht aus dem Speicher entfernt.
Weak-Verweis ist ein schwacher Verweis, der den Referenzzähler des Objekts nicht erhöht. Er wird verwendet, um Retain-Zyklen zu verhindern. Wenn das Objekt, auf das der schwache Verweis zeigt, gelöscht wird, wird der schwache Verweis automatisch auf nil gesetzt.
Beispiel in Swift:
class Person {
var name: String
init(name: String) { self.name = name }
var apartment: Apartment?
}
class Apartment {
let unit: String
weak var tenant: Person? // schwacher Verweis, um Zyklen zu vermeiden
init(unit: String) { self.unit = unit }
}
let john = Person(name: "John")
let apt = Apartment(unit: "4A")
john.apartment = apt
apt.tenant = john // schwacher Verweis
Hier hält der schwache Verweis tenant das Objekt Person nicht fest, was Speicherlecks vermeidet.