Sobes.tech
Junior — Middle

Wat is het verschil tussen de typen Strong en Weak referenties in geheugenbeheer en het referentiemodel?

sobes.tech AI

Antwoord van AI

Strong-koppeling is een gewone sterke koppeling naar een object, die de referentieteller (retentieaantal) van dat object verhoogt. Zolang er ten minste één sterke koppeling bestaat, wordt het object niet uit het geheugen verwijderd.

Weak-koppeling is een zwakke koppeling die de referentieteller van het object niet verhoogt. Het wordt gebruikt om retentiecycli te voorkomen. Als het object waarnaar de weak-koppeling verwijst wordt verwijderd, wordt de weak-koppeling automatisch op nil gezet.

Voorbeeld 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?  // zwakke koppeling om cycli te voorkomen
    init(unit: String) { self.unit = unit }
}

let john = Person(name: "John")
let apt = Apartment(unit: "4A")
john.apartment = apt
apt.tenant = john  // zwakke koppeling

Hier houdt de zwakke koppeling tenant het Person-object niet vast, wat geheugenlekken voorkomt.