Sobes.tech
Junior — Middle

Puteți explica mecanismul de colectare a gunoiului în Swift și modul în care gestionează memoria?

sobes.tech AI

Răspuns de la AI

În Swift nu există un colector de gunoi clasic, ca în unele alte limbaje. În schimb, se utilizează un mecanism de numărare automată a referințelor (ARC - Automatic Reference Counting).

ARC funcționează astfel: fiecare obiect din memorie are un contor de referințe, care crește atunci când se creează o nouă referință la obiect și scade atunci când referința este eliminată sau devine nil. Când contorul de referințe al unui obiect 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: "Иван")
var person2 = person1 // contorul de referințe crește
person1 = nil // contorul scade, dar obiectul rămâne în viață, deoarece person2 face referire la el
person2 = nil // contorul devine 0, iar obiectul este eliminat

Astfel, gestionarea memoriei în Swift se face automat, fără a fi nevoie să se apeleze manual un colector de gunoi, ceea ce crește performanța și reduce probabilitatea scurgerilor de memorie dacă este utilizat corect.