Sobes.tech
Junior — Middle

Waarom wordt het aanbevolen om een zwakke verwijzing naar jezelf (weak self) te gebruiken in code met closures?

sobes.tech AI

Antwoord van AI

Het gebruik van zwakke verwijzingen (weak self) in closures is nodig om sterke verwijzingscycli (retention cycles) te voorkomen, die leiden tot geheugenlek.

Wanneer een closure self als een sterke verwijzing vastlegt, en self bevat die closure (bijvoorbeeld in een eigenschap), houden ze elkaar vast en wordt geen van de objecten vrijgegeven.

Voorbeeld van het gebruik van een zwakke verwijzing:

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

Hier wordt self zwak vastgelegd, dus als het self-object wordt vernietigd voordat de closure wordt uitgevoerd, zal de closure het niet in geheugen houden, wat een geheugenlek voorkomt.