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, ობიექტი Person იხსნება

ამ გზით, ARC ავტომატურად თავისუფლდებს ობიექტებს, როდესაც მათზე აქტიური მითითებები აღარ არის.