Sobes.tech
Junior — Middle

Můžete vysvětlit mechanismus práce garbage collectoru ve Swift a jak spravuje paměť?

sobes.tech AI

Odpověď od AI

Ve Swiftu neexistuje klasický sběrač odpadků (Garbage Collector), jako v některých jiných jazycích. Místo toho se používá mechanismus automatického počítání odkazů (ARC - Automatic Reference Counting).

ARC funguje takto: každý objekt v paměti má čítač odkazů, který se zvyšuje při vytváření nové reference na objekt a snižuje se, když je reference odstraněna nebo se stane nil. Když čítač odkazů objektu dosáhne nuly, objekt je automaticky odstraněn z paměti.

Příklad:

class Person {
    var name: String
    init(name: String) {
        self.name = name
    }
}

var person1: Person? = Person(name: "Иван")
var person2 = person1 // čítač odkazů se zvyšuje
person1 = nil // čítač se snižuje, ale objekt žije dál, protože person2 na něj odkazuje
person2 = nil // čítač je 0 a objekt je odstraněn

Tímto způsobem je správa paměti ve Swiftu automatická, není třeba volat ručně sběrač odpadků, což zvyšuje výkon a snižuje pravděpodobnost úniků paměti při správném použití.