Junior — Middle
Millistel juhtudel peetakse, et muutuja on kaotanud oma asjakohasuse ja eemaldatakse mälust?
sobes.tech AI
Vastus AI-lt
iOS-is peetakse muutujat vananenuks ja see võib mälust eemaldada, kui sellel pole enam tugevaid viiteid (strong references). See on võimalik automaatse mäluhalduse ARC (Automatic Reference Counting) kaudu.
Peamised juhtumid, kui objekt eemaldatakse mälust:
- Kõik tugevad viited objekti on kustutatud või seatud nil-iks.
- Objekti ei hoia enam ükski teine objekt.
Näiteks, kui teil on muutuja, mis viitab objekti, ja määrate selle nil-iks või see väljub ulatusest, väheneb viidete arv. Kui arv jõuab nullini, vabastatakse objekt.
class MyClass {}
var obj: MyClass? = MyClass() // viidete arv = 1
obj = nil // viidete arv = 0, objekt eemaldatud
Seega muutub muutuja vananenuks, kui sellele enam ei viita tugevad viited, ja objekti mälu vabastatakse.