Sobes.tech
Junior — Middle

V jakých situacích se používá slabé odkaz na objekt?

sobes.tech AI

Odpověď od AI

Slabý odkaz (weak reference) v iOS se používá k prevenci cyklů silných odkazů (retain cycles), které mohou vést k únikům paměti. Nezvyšuje čítač odkazů na objekt, takže objekt může být uvolněn i při existenci slabých odkazů na něj.

Typické situace použití slabých odkazů:

  • Delegáti: často jsou deklarováni jako weak, aby se zabránilo cyklu mezi objektem a jeho delegátem.
  • Closure: pokud closure zachytí self, aby se zabránilo cyklu, zachytí self pomocí [weak self].
  • Spojení mezi objekty, kde jeden objekt vlastní jiný, a druhý by měl mít odkaz bez vlastnictví.

Příklad s delegátem:

protocol SomeDelegate: AnyObject {
    func didUpdate()
}

class SomeClass {
    weak var delegate: SomeDelegate?
}

Tímto způsobem slabý odkaz pomáhá spravovat paměť a předcházet únikům.