Junior — Middle
Je možné deklarovať slabú referenciu ako konštantu, a v ktorých prípadoch je to prípustné?
sobes.tech AI
Odpoveď od AI
V Swift-e musí byť slabá referencia (weak) vždy deklarovaná ako premenná (var), nie ako konštanta (let). To je spôsobené tým, že slabá referencia sa automaticky nastaví na nil, keď objekt, na ktorý odkazuje, je uvoľnený z pamäti. Ak by slabá referencia bola konštantou, nebolo by možné jej hodnotu zmeniť na nil, čo je v rozpore s logikou slabých referencií.
Preto je deklarácia slabé referencie ako konštanty nemožná a bez zmyslu. Príklad správnej deklarácie:
class MyClass {
weak var delegate: SomeDelegate?
}
Ak chcete, aby referencia bola konštantou, môžete použiť silnú referenciu (let), ale v takom prípade nebude slabá a môže viesť k cyklom udržiavania.