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