Sobes.tech
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.