Sobes.tech
Junior — Middle

Is het mogelijk om een mechanisme te implementeren dat objecten volgt met behulp van zwakke referenties, zonder hun verwijdering door de garbage collector te voorkomen?

sobes.tech AI

Antwoord van AI

Ja, op iOS (en Swift) bestaat een mechanisme van zwakke referenties (weak references), waarmee objecten kunnen worden gevolgd zonder ze in het geheugen te houden en het verwijderen door de garbage collector (ARC) te voorkomen.

Een zwakke referentie verhoogt niet de referentieteller van het object, dus wanneer er geen sterke referenties meer zijn, wordt het object vrijgegeven uit het geheugen.

Voorbeeld van het gebruik van een zwakke referentie in Swift:

class Person {
    let name: String
    init(name: String) {
        self.name = name
    }
}

class Apartment {
    weak var tenant: Person?  // zwakke referentie
}

var person: Person? = Person(name: "Ivan")
var apartment: Apartment? = Apartment()
apartment?.tenant = person

person = nil  // het Person-object wordt verwijderd, omdat er geen sterke referenties meer zijn

print(apartment?.tenant)  // nil

Op deze manier maken zwakke referenties het mogelijk om objecten te volgen zonder hun verwijdering te belemmeren.