Junior — Middle
Puteți explica cum are loc eliberarea memoriei ocupate de un obiect în sistem?
sobes.tech AI
Răspuns de la AI
În iOS, eliberarea memoriei obiectelor se face în principal prin mecanismul ARC (Contorizarea Referințelor Automate).
Fiecare obiect din memorie are un contor de referințe: numărul de referințe active către el. Când se creează o referință către un obiect, contorul crește; când referința este eliminată, scade. Când contorul ajunge la zero, obiectul este eliminat automat din memorie.
Exemplu:
class Person {
var name: String
init(name: String) {
self.name = name
}
}
var person1: Person? = Person(name: "Alex") // contor de referințe = 1
var person2 = person1 // contor de referințe = 2
person1 = nil // contor de referințe = 1
person2 = nil // contor de referințe = 0, obiectul este eliberat
Dacă există referințe ciclice (de exemplu, două obiecte care se referă reciproc), ARC nu poate elibera automat memoria. Pentru a rezolva acest lucru, se folosesc referințe slabe (weak) sau neproprietare (unowned), care nu cresc contorul.