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, օբյեկտը հեռացվում է

Այսպիսով, ARC-ը ավտոմատ կերպով ազատում է օբյեկտները, երբ այլ ակտիվ հղումներ չեն լինում։