Junior — Middle
Proč se doporučuje používat slabou referenci na sebe (weak self) v kódu s uzávěry?
sobes.tech AI
Odpověď od AI
Použití slabé reference (weak self) v uzávěrech je nezbytné k prevenci cyklů silných odkazů (retain cycles), které vedou ke ztrátě paměti.
Když uzávěr zachytí self jako slabou referenci a self obsahuje tento uzávěr (například v vlastnosti), vzájemně se drží a žádný z objektů není uvolněn.
Příklad použití slabé reference:
someAsyncCall { [weak self] in
guard let self = self else { return }
self.doSomething()
}
Zde je self zachyceno slabě, takže pokud bude objekt self zničen před vykonáním uzávěru, uzávěr ho v paměti nezachytí, což zabraňuje úniku.