Sobes.tech
Junior — Middle

Որ փուլում է կատարվում ARC հիշողության հաշվարկի ավտոմատ ռեժիմում հղման հաշվիչի կառավարումը?

sobes.tech AI

Պատասխան AI-ից

ARC (Automatic Reference Counting) ավտոմատ հիշողության հաշվարկի միջոցով, հղումների հաշվիչի կառավարումը կոմպիլացիայի և կոդի գործարկման ժամանակ տեղի է ունենում:

  • Կոմպիլացիայի փուլում, կոմպիլատորը վերլուծում է կոդը և ավտոմատ կերպով ավելացնում է կանչեր՝ բարձրացնելու (retain) և նվազեցնելու (release) հղումների հաշվիչը՝ օբյեկտների նշանակման և օգտագործման գործողությունների շուրջ:

  • Կատարողական ժամանակ, այս ավելացված կանչերը կառավարում են օբյեկտների կյանքի ցիկլը. բարձրացնելով հաշվիչը, օբյեկտը պահվում է; նվազեցնելով և հասնելով զրոյի, օբյեկտը ազատվում է:

Այսպիսով, հղումների հաշվիչի կառավարումը անուղղակի և ավտոմատ է ծրագրի գործարկման ժամանակ, շնորհիվ կոմպիլատորին ավելացված հրահանգների:

Swift-ում օրինակ՝

class Person {}

func createPerson() {
    let p = Person() // ARC բարձրացնում է հաշվիչը
    // ... օգտագործում p
} // ֆունկցիայի դուրս գալու ժամանակ, ARC նվազեցնում է հաշվիչը, և եթե այլ հղումներ չկան, օբյեկտը ազատվում է

Այսպիսով, ծրագրավորողը կարող է չմտածել հիշողության ձեռքով կառավարում մասին։