Junior — Middle
Prečo sa v kóde s uzávermi odporúča používať slabú referenciu na seba (weak self)?
sobes.tech AI
Odpoveď od AI
Použitie slabého odkazu (weak self) v uzávierkach je nevyhnutné na prevenciu cyklov silných odkazov (retain cycles), ktoré vedú k únikom pamäte.
Keď uzávierka zachytí self ako slabý odkaz a self obsahuje tento uzávierok (napríklad v vlastnosti), držia sa navzájom a žiadny z objektov nie je uvoľnený.
Príklad použitia slabého odkazu:
someAsyncCall { [weak self] in
guard let self = self else { return }
self.doSomething()
}
Tu je self zachytené slabé, takže ak objekt self bude zničený pred vykonaním uzávierky, uzávierka ho v pamäti neudrží, čím sa zabráni úniku.