Sobes.tech
Middle

Miért szükségesek az erős hivatkozások a Swift programozási nyelvben?

sobes.tech MI

Válasz az MI-től

A Swiftben a erős hivatkozások (strong references) szükségesek ahhoz, hogy egy objektum addig maradjon a memóriában, amíg legalább egy erős hivatkozás van rá. Ezek az alapértelmezett viselkedés a referenciatípusok (osztályok) esetében.

Amikor egy változó vagy állandó egy osztálypéldányra hivatkozik, ez a hivatkozás alapértelmezés szerint erős. Ez növeli az adott példány referencia számlálóját (reference count). Amint minden erős hivatkozás megszűnik (például, amikor a változók kilépnek a hatókörből vagy nil-re vannak állítva), a referencia számláló nullára csökken, és a memóriakezelő rendszer (ARC - Automatikus Referencia Számolás) felszabadítja az adott példány által foglalt memóriát.

Az erős hivatkozások fő feladata, hogy garantálják, az objektum ne kerüljön idő előtt felszabadításra, amíg még használatban van. Erős hivatkozások nélkül az objektumok bármikor törölhetők, ami a felszabadított memória eléréséből adódó hibákhoz (lógó mutató hibák) vezethet.

Azonban az erős hivatkozások ciklusokat (retain cycle) is okozhatnak, amikor két vagy több objektum erősen hivatkozik egymásra, és egyik sem szabadulhat fel, még akkor sem, ha nincs más külső hivatkozás rájuk. Az ilyen ciklusok elkerülése érdekében gyenge (weak) és tulajdon nélküli (unowned) hivatkozásokat használnak.