Sobes.tech
Junior — Middle

In welke omstandigheden moet je een zwakke verwijzing (weak) binnen een closure gebruiken?

sobes.tech AI

Antwoord van AI

Zwakke verwijzingen (weak) binnen closures in iOS worden gebruikt om sterke referentiecirkels (retain cycles) te voorkomen, die kunnen leiden tot geheugenlekken. Dit is vooral relevant wanneer een closure een object (bijvoorbeeld self) vastlegt en door dat object wordt vastgehouden, waardoor een wederzijdse sterke verwijzing ontstaat.

Gebruik weak om naar self te verwijzen binnen de closure als de closure wordt opgeslagen als een eigenschap van het object of langer kan bestaan dan de functieaanroep, om te voorkomen dat het object in het geheugen wordt vastgehouden nadat het is vrijgegeven.

Voorbeeld in Swift:

class ViewController {
    var completion: (() -> Void)?

    func setup() {
        completion = { [weak self] in
            guard let self = self else { return }
            self.doSomething()
        }
    }

    func doSomething() {
        print("Actie uitgevoerd")
    }
}

Hier voorkomt [weak self] een sterke cyclus tussen ViewController en de closure completion.