Junior — Middle
Swift are colectare automată a gunoiului, similară cu GC în alte limbaje?
sobes.tech AI
Răspuns de la AI
În Swift, nu se utilizează colectarea automată a gunoiului (GC) în sensul clasic, ca în Java sau C#. În schimb, Swift aplică un sistem de numărare automată a referințelor (ARC — Automatic Reference Counting). ARC urmărește automat numărul de referințe către un obiect și eliberează memoria atunci când nu mai există referințe.
Exemplu:
class Person {
var name: String
init(name: String) {
self.name = name
}
}
var person1: Person? = Person(name: "Ivan")
var person2 = person1 // crește contorul de referințe
person1 = nil // obiectul încă trăiește, deoarece person2 face referire la el
person2 = nil // acum obiectul este eliberat
Astfel, ARC funcționează automat, dar fără pauze și costuri suplimentare, caracteristice colectorilor de gunoi tradiționali.