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 ავტომატურად თავისუფლდებს ობიექტებს, როდესაც მათზე აქტიური მითითებები აღარ არის.