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-ը այդ զանգահարումները ավելացնում է կոմպիլյացիայի ժամանակ, ինչը նվազեցնում է հիշողության կառավարման սխալների, ինչպիսիք են լողափերը կամ կրկնակի ազատումը, հավանականությունը։