Sobes.tech
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 sa self zachytí 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.