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.