Junior — Middle
V ktorých prípadoch sa považuje, že premenná stratila svoju aktuálnosť a je odstránená z pamäte?
sobes.tech AI
Odpoveď od AI
V iOS sa považuje premenná za zastaranú a môže byť odstránená z pamäte, keď na ňu už neexistujú silné odkazy (strong references). To je možné vďaka automatickému spravovaniu pamäte prostredníctvom ARC (Automatic Reference Counting).
Hlavné prípady, keď je objekt odstránený z pamäte:
- Všetky silné odkazy na objekt boli odstránené alebo nastavené na nil.
- Objekt už nie je držaný žiadnym iným objektom.
Napríklad, ak máte premennú, ktorá odkazuje na objekt, a priradíte jej nil alebo vyjde z rozsahu, počet odkazov sa zníži. Keď počet dosiahne nulu, objekt je uvoľnený.
class MyClass {}
var obj: MyClass? = MyClass() // počet odkazov = 1
obj = nil // počet odkazov = 0, objekt bol odstránený
Týmto spôsobom sa premenná stáva zastaranou, keď na objekt, na ktorý odkazovala, už nie sú žiadne silné odkazy, a pamäť objektu je uvoľnená.