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č.