Sobes.tech
Junior — Middle

Можете ли објаснити механизам рада GC у Swift-у и како он управља меморијом?

sobes.tech АИ

Одговор од АИ

У Swift-u ne postoji klasični sakupljač smeća (Garbage Collector), kao u nekim drugim jezicima. Umesto toga, koristi se mehanizam automatskog brojanja referenci (ARC - Automatic Reference Counting).

ARC radi na sledeći način: svaki objekat u memoriji ima brojač referenci, koji se povećava kada se kreira nova referenca na objekat i smanjuje kada se referenca ukloni ili postane nil. Kada brojač referenci objekta dostigne nulu, objekat se automatski uklanja iz memorije.

Primer:

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

var person1: Person? = Person(name: "Иван")
var person2 = person1 // brojač referenci se povećava
person1 = nil // brojač se smanjuje, ali objekat i dalje postoji jer person2 na njega ukazuje
person2 = nil // brojač postaje 0 i objekat se uklanja

Na ovaj način, upravljanje memorijom u Swift-u je automatsko, bez potrebe za ručnim pozivanjem sakupljača smeća, što povećava performanse i smanjuje verovatnoću curenja memorije ako se koristi ispravno.