Sobes.tech
Junior — Middle

Milyen esetekben tekintjük úgy, hogy egy változó elvesztette aktualitását, és törlődik a memóriából?

sobes.tech MI

Válasz az MI-től

Az iOS-ben egy változót akkor tekintünk elavultnak, és törölhető a memóriából, amikor már nincs rá erős hivatkozás (strong reference). Ez az automatikus memóriakezelésnek köszönhető az ARC (Automatic Reference Counting) révén.

Azok az esetek, amikor egy objektum törlődik a memóriából:

  • Minden erős hivatkozás az objektumra törlésre került vagy nil értékre állították.
  • Az objektumot semmilyen más objektum nem tartja meg.

Például, ha van egy változó, ami egy objektumra hivatkozik, és nil értéket adunk neki vagy kilép a hatókörből, akkor a hivatkozásszám csökken. Amikor ez a szám nulla lesz, az objektum felszabadul.

class MyClass {}

var obj: MyClass? = MyClass()  // hivatkozásszám = 1
obj = nil                      // hivatkozásszám = 0, az objektum felszabadult

Így a változó elavulttá válik, amikor már nincs rá erős hivatkozás, és az objektum memóriája felszabadul.