Sobes.tech
Junior — Middle

Môžete vysvetliť mechanizmus zberača odpadu v Swift a ako spravuje pamäť?

sobes.tech AI

Odpoveď od AI

V Swifti neexistuje klasický zberač odpadkov (Garbage Collector), ako v niektorých iných jazykoch. Namiesto toho sa používa mechanizmus automatického počítania odkazov (ARC - Automatic Reference Counting).

ARC funguje takto: každý objekt v pamäti má čítač odkazov, ktorý sa zvyšuje pri vytvorení novej referencie na objekt a znižuje sa, keď je referencia odstránená alebo sa stane nil. Keď čítač odkazov objektu dosiahne nulu, objekt sa automaticky odstráni z pamäti.

Príklad:

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

var person1: Person? = Person(name: "Иван")
var person2 = person1 // čítač odkazov sa zvyšuje
person1 = nil // čítač sa znižuje, ale objekt stále žije, pretože person2 naň odkazuje
person2 = nil // čítač je 0 a objekt sa odstráni

Týmto spôsobom je správa pamäte v Swifte automatická, nie je potrebné volať manuálne zberač odpadkov, čo zvyšuje výkon a znižuje pravdepodobnosť únikov pamäte pri správnom používaní.