Sobes.tech
Junior — Middle

Ar galite paaiškinti ARC automatinės atminties valdymo mechanizmą ir kaip jis atlaisvina nenaudojamus objektus?

sobes.tech AI

Atsakymas iš AI

ARC (Automatinis nuorodų skaičiavimas) yra atminties valdymo mechanizmas iOS, kuris automatiškai stebi nuorodų į objektus skaičių ir juos laisvuoja, kai jie nebėra reikalingi.

Veikimo principas:

  • Kiekvienas objektas turi nuorodų skaitiklį (retention count).
  • Kai sukuriama nuoroda į objektą, skaitiklis didėja.
  • Kai nuoroda pašalinama, skaitiklis mažėja.
  • Kai skaitiklis pasiekia nulį, objektas automatiškai ištrinamas iš atminties.

ARC veikia kompiliacijos metu, įterpdama retain/release iškvietimus į kodą, todėl programuotojui nereikia rankiniu būdu valdyti atminties.

Pavyzdys Swift kalba:

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

var person1: Person? = Person(name: "Иван") // nuorodų skaitiklis = 1
var person2 = person1 // nuorodų skaitiklis = 2
person1 = nil // nuorodų skaitiklis = 1
person2 = nil // nuorodų skaitiklis = 0, objektas Person ištrinamas

Taip ARC automatiškai išlaisvina objektus, kai jų aktyvių nuorodų nebėra.