Sobes.tech
Junior — Middle

Můžete vysvětlit, jak dochází k uvolnění paměti zabrané objektem v systému?

sobes.tech AI

Odpověď od AI

V iOS je uvolnění paměti objektů prováděno především mechanismem ARC (Automatické počítání referencí).

Každý objekt v paměti má čítač referencí: počet aktivních odkazů na něj. Když je vytvořen odkaz na objekt, čítač se zvýší; když je odkaz odstraněn, sníží se. Jakmile čítač dosáhne nuly, objekt je automaticky uvolněn z paměti.

Příklad:

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

var person1: Person? = Person(name: "Alex") // čítač referencí = 1
var person2 = person1 // čítač referencí = 2
person1 = nil // čítač referencí = 1
person2 = nil // čítač referencí = 0, objekt je uvolněn

Pokud existují cyklické odkazy (například dva objekty odkazující na sebe navzájem), ARC nedokáže automaticky uvolnit paměť. K řešení se používají slabé (weak) nebo ne vlastnické (unowned) odkazy, které nezvyšují čítač.