Sobes.tech
Middle

Na čo sú v jazyku Swift potrebné silné odkazy?

sobes.tech AI

Odpoveď od AI

Silné odkazy (strong references) v Swift sú nevyhnutné na to, aby objekt zostal v pamäti, pokiaľ na neho existuje aspoň jedna silná referencia. Sú predvoleným správaním pre referenčné typy (triedy).

Keď premenná alebo konštanta odkazuje na inštanciu triedy, tento odkaz je predvolene silný. To zvyšuje počet referencií (reference count) pre túto inštanciu. Akonáhle všetky silné odkazy na inštanciu prestanú existovať (napríklad, keď premenné opustia rozsah alebo im je priradené nil), počet referencií dosiahne nulu a systém správy pamäti (ARC - Automatické počítanie referencií) uvoľní pamäť obsadenú touto inštanciou.

Hlavnou úlohou silných odkazov je zabezpečiť, že objekt nebude predčasne deallocovaný, kým je ešte používaný. Bez silných odkazov by objekty mohli byť odstránené kedykoľvek, čo by spôsobilo chyby pri prístupe k uvoľnenej pamäti (chyby visiaceho ukazovateľa).

Avšak, silné odkazy môžu viesť k cyklom odkazov (retain cycle), keď dva alebo viac objektov má silné odkazy na seba navzájom, a žiadny z nich nemôže byť uvoľnený, aj keď na ne nie sú žiadne iné externé odkazy. Na prevenciu týchto cyklov sa používajú slabé (weak) a bezmajiteľské (unowned) odkazy.