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