Junior — Middle
V ktorých situáciách sa používa slabé odkaz na objekt?
sobes.tech AI
Odpoveď od AI
Slabé odkazovanie (weak reference) v iOS sa používa na prevenciu cyklov silných odkazov (retain cycles), ktoré môžu viesť k únikom pamäte. Nezvyšuje čítač odkazov na objekt, takže objekt môže byť uvoľnený aj v prípade, že na neho existujú slabé odkazy.
Typické situácie použitia slabých odkazov:
- Delegáti: často sú deklarovaní ako
weak, aby sa predišlo cyklu medzi objektom a jeho delegátom. - Closure: ak closure zachytí
self, na prevenciu cyklu saselfzachytí pomocou[weak self]. - Väzby medzi objektmi, kde jeden objekt vlastní iný a druhý by mal mať odkaz bez vlastníctva.
Príklad s delegátom:
protocol SomeDelegate: AnyObject {
func didUpdate()
}
class SomeClass {
weak var delegate: SomeDelegate?
}
Týmto spôsobom slabý odkaz pomáha spravovať pamäť a predchádzať únikom.