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; // რაოდენობა მცირდება
// როდესაც ყველა მითითება ობიექტზე გაქრება, მეხსიერება ავტომატურად თავისუფლდება

დეველოპერს არ სჭირდება explicitly გამოიძახოს retain/release, ARC ამ ამძრავებს კომპილაციის დროს, რაც ამცირებს მეხსიერების მართვის შეცდომების, როგორიცაა ლიქვები ან ორჯერადი გათავისუფლება, ალბათობას.