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.