Sobes.tech
Junior — Middle

Môžete vysvetliť, ako dochádza k uvoľneniu pamäte, ktorú zaberá objekt v systéme?

sobes.tech AI

Odpoveď od AI

V iOS-e sa uvoľňovaní pamäte objektov vykonáva predovšetkým mechanizmus ARC (Automatické počítanie referencií).

Každý objekt v pamäti má čítač referencií: počet aktívnych odkazov na neho. Keď sa vytvorí odkaz na objekt, čítač sa zvýši; keď sa odkaz odstráni, zníži sa. Keď čítač dosiahne nulu, objekt sa automaticky uvoľní z pamäte.

Príklad:

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

var person1: Person? = Person(name: "Alex") // čítač referencií = 1
var person2 = person1 // čítač referencií = 2
person1 = nil // čítač referencií = 1
person2 = nil // čítač referencií = 0, objekt sa uvoľní

Ak existujú cyklické odkazy (napríklad, dva objekty odkazujúce na seba navzájom), ARC nedokáže automaticky uvoľniť pamäť. Na vyriešenie tohto problému sa používajú slabé (weak) alebo ne vlastnické (unowned) odkazy, ktoré nezvyšujú čítač.