Junior — Middle
Lze slabé odkazy deklarovat jako konstantu, a v jakých případech je to přípustné?
sobes.tech AI
Odpověď od AI
Ve Swiftu musí být slabá reference (weak) vždy deklarována jako proměnná (var), nikoli jako konstanta (let). To je způsobeno tím, že slabá reference se automaticky nastaví na nil, když je objekt, na který odkazuje, uvolněn z paměti. Pokud by slabá reference byla konstanta, nebylo by možné její hodnotu změnit na nil, což je v rozporu s logikou slabých referencí.
Proto je deklarace slabé reference jako konstanty nemožná a nemá smysl. Příklad správné deklarace:
class MyClass {
weak var delegate: SomeDelegate?
}
Pokud chcete, aby reference byla konstantní, můžete použít silnou referenci (let), ale pak nebude slabá a může vést ke cyklům držení.