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