Junior — Middle
De ce este recomandat să folosiți o referință slabă către sine (weak self) în codul care utilizează closures?
sobes.tech AI
Răspuns de la AI
Utilizarea referințelor slabe (weak self) în closures este necesară pentru a preveni ciclurile de referință puternice (retention cycles), care duc la scurgeri de memorie.
Când o closure capturează self ca referință slabă, iar self conține acea closure (de exemplu, într-o proprietate), ele se mențin reciproc, și nici unul dintre obiecte nu este eliberat.
Exemplu de utilizare a unei referințe slabe:
someAsyncCall { [weak self] in
guard let self = self else { return }
self.doSomething()
}
Aici, self este capturat slab, astfel încât dacă obiectul self este distrus înainte de executarea closure-ului, acesta nu îl va menține în memorie, prevenind o scurgere.