Junior — Middle
Van-e automatik szemétgyűjtés a Swiftben, hasonlóan más nyelvek GC-jéhez?
sobes.tech MI
Válasz az MI-től
Swiftben nem használják a hagyományos értelemben vett szemétgyűjtőt (GC), mint Java vagy C# esetében. Ehelyett a Swift az automatikus hivatkozásszámlálási rendszert (ARC — Automatic Reference Counting) alkalmazza. Az ARC automatikusan nyomon követi egy objektumhoz tartozó hivatkozások számát, és felszabadítja a memóriát, amikor már nincs rá hivatkozás.
Példa:
class Person {
var name: String
init(name: String) {
self.name = name
}
}
var person1: Person? = Person(name: "Ivan")
var person2 = person1 // növeli a hivatkozásszámot
person1 = nil // az objektum még él, mert a person2 hivatkozik rá
person2 = nil // most az objektum felszabadul
Így az ARC automatikusan működik, de anélkül, hogy szünetek vagy többletköltségek lennének, amelyek jellemzőek a hagyományos szemétgyűjtőkre.