Sobes.tech
Junior — Middle

Оё метавонед механизмии идораи худкӯши хотира дар ARC ва чӣ гуна озод кардани объектҳои нопайдошударо шарҳ диҳед?

sobes.tech AI

Ҷавоб аз AI

ARC (Автоматикӣ Референсҳои ҳисобкунии) як механизми идоракунии хотира дар iOS мебошад, ки ба таври автоматӣ шумораи истинодҳоро ба объектҳо пайгирӣ мекунад ва вақте ки онҳо дигар лозим нестанд, онҳоро озод мекунад.

Принсипи кор:

  • Ҳар як объект дорои ҳисобкунаки истинод (retention count) мебошад.
  • Вақте ки ба объект истинод сохта мешавад, ҳисобкунак меафзояд.
  • Вақте ки истинод хориҷ карда мешавад, ҳисобкунак кам мешавад.
  • Вақте ки ҳисобкунак ба сифр мерасад, объект автоматӣ аз хотира хориҷ карда мешавад.

ARC дар марҳилаи компилятсия кор мекунад, бо илова кардани даъватҳои retain/release ба код, бинобар ин, барномасоз бояд хотираро дастӣ идора накунад.

Масалан дар Swift:

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

var person1: Person? = Person(name: "Иван") // ҳисобкунаки нигоҳдорӣ = 1
var person2 = person1 // ҳисобкунаки нигоҳдорӣ = 2
person1 = nil // ҳисобкунаки нигоҳдорӣ = 1
person2 = nil // ҳисобкунаки нигоҳдорӣ = 0, объект Person хориҷ карда мешавад

Ин тариқ, ARC автоматӣ объектҳоро озод мекунад, вақте ки дигар истинодҳои фаъол ба онҳо вуҷуд надорад.