Junior — Middle
Ar galite paaiškinti ARC automatinės atminties valdymo mechanizmą ir kaip jis atlaisvina nenaudojamus objektus?
sobes.tech AI
Atsakymas iš AI
ARC (Automatinis nuorodų skaičiavimas) yra atminties valdymo mechanizmas iOS, kuris automatiškai stebi nuorodų į objektus skaičių ir juos laisvuoja, kai jie nebėra reikalingi.
Veikimo principas:
- Kiekvienas objektas turi nuorodų skaitiklį (retention count).
- Kai sukuriama nuoroda į objektą, skaitiklis didėja.
- Kai nuoroda pašalinama, skaitiklis mažėja.
- Kai skaitiklis pasiekia nulį, objektas automatiškai ištrinamas iš atminties.
ARC veikia kompiliacijos metu, įterpdama retain/release iškvietimus į kodą, todėl programuotojui nereikia rankiniu būdu valdyti atminties.
Pavyzdys Swift kalba:
class Person {
var name: String
init(name: String) {
self.name = name
}
}
var person1: Person? = Person(name: "Иван") // nuorodų skaitiklis = 1
var person2 = person1 // nuorodų skaitiklis = 2
person1 = nil // nuorodų skaitiklis = 1
person2 = nil // nuorodų skaitiklis = 0, objektas Person ištrinamas
Taip ARC automatiškai išlaisvina objektus, kai jų aktyvių nuorodų nebėra.