Sobes.tech
Junior — Middle

Կարող եք բացատրել ավտոմատ հիշողության կառավարման ARC-ի աշխատանքային սկզբունքը Objective-C-ում?

sobes.tech AI

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

ARC (Ավտոմատ Հղումների Հաշվարկ) հանդիսանում է հիշողության կառավարման մեխանիզմ Objective-C-ում, որը ավտոմատ կերպով հետևում է օբյեկտների հղումների թվին և ազատում է հիշողությունը, երբ օբյեկտը այլևս չի օգտագործվում:

ARC-ի աշխատանքային սկզբունքը հիմնված է հղումների հաշվարկի վրա (retain count):

  • Երբ օբյեկտը ստեղծվում է, նրա հաշիվը 1 է:
  • Երբ օբյեկտը վերագրվում է նոր փոփոխականին, հաշիվը բարձրանում է (retain):
  • Երբ փոփոխականը դուրս է գալիս տեսադաշտից կամ վերագրվում է nil, հաշիվը իջնում է (release):
  • Երբ հաշիվը հասնում է 0-ի, օբյեկտը ավտոմատ կերպով հեռացվում է հիշողությունից:

Օրինակ՝

NSObject *obj = [[NSObject alloc] init]; // retain count = 1
self.property = obj; // հաշիվը բարձրանում է
obj = nil; // հաշիվը իջնում է
// Երբ բոլոր հղումները օբյեկտին անհետանում են, հիշողությունը ավտոմատ կերպով ազատվում է

Դավաճանողը պետք է հստակորեն չզանգի retain/release, ARC-ը այդ զանգահարումները ավելացնում է կոմպիլյացիայի ժամանակ, ինչը նվազեցնում է հիշողության կառավարման սխալների, ինչպիսիք են լողափերը կամ կրկնակի ազատումը, հավանականությունը։