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.