Sobes.tech
Junior — Middle

Mikor történik az automatik memóriafelszabadítás egy olyan objektum esetében, amelyre egy erős hivatkozásszámláló mutat, és az hozzáférhetetlenné válik?

sobes.tech MI

Válasz az MI-től

Az erős hivatkozásokkal rendelkező objektumok automatikus memóriafelszabadítása akkor történik, amikor az adott objektum erős hivatkozásainak száma nullára csökken, vagyis már nincs erős hivatkozás, amely az objektumra mutat.

Ebben a pillanatban az objektum elérhetetlenné válik, és a memóriakezelő rendszer (ARC az iOS-en) eltávolíthatja. Ha legalább egy erős hivatkozás létezik, az objektum továbbra is a memóriában marad.

Példa:

class MyClass {}

var a: MyClass? = MyClass() // erős hivatkozások száma = 1
var b = a                   // erős hivatkozások száma = 2

a = nil                    // erős hivatkozások száma = 1
b = nil                    // erős hivatkozások száma = 0, az objektum felszabadul

Így a memória automatikusan felszabadul, amikor az objektumra már nincs szükség, és nincs rá erős hivatkozás.