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.