Sobes.tech
Junior — Middle

Можете ли објаснити како се ослобађа меморија која је заузета објектом у систему?

sobes.tech АИ

Одговор од АИ

U iOS-u, oslobađanje memorije objekata uglavnom se vrši pomoću mehanizma ARC (Automatsko brojanje referenci).

Svaki objekat u memoriji ima brojač referenci: broj aktivnih referenci na njega. Kada se kreira referenca na objekat, brojač se povećava; kada se referenca ukloni, smanjuje se. Kada brojač 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: "Alex") // brojač referenci = 1
var person2 = person1 // brojač referenci = 2
person1 = nil // brojač referenci = 1
person2 = nil // brojač referenci = 0, objekat se oslobađa

Ako postoje ciklične reference (na primer, dva objekta koji se međusobno referenciraju), ARC ne može automatski osloboditi memoriju. Za rešavanje ovog problema koriste se slabe (weak) ili neposedne (unowned) reference, koje ne povećavaju brojač.