Sobes.tech
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.