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í.