Sobes.tech
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á.