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