სად ხორციელდება ჩვეულებრივ მეხსიერების მართვისთვის მიმთითებლების გამრიცხველობა?
sobes.tech AI
პასუხი AI-სგან
მეხსიერების მართვისთვის მიმთითებლების გამრავლება ჩვეულებრივ იშვიათად რეალიზდება ობიექტის ან მისი შეფუთვის (runtime) დონეზე, სადაც თითოეულ ობიექტზე ინახება აქტიური მიმთითებლების რაოდენობა. როდესაც ახალი მიმთითებელი შეიქმნება, გამრავლება იზრდება, ხოლო როდესაც მიმთითებელი წაიშლება — მცირდება. თუ გამრავლება მიაღწევს ნულს, ობიექტი გათავისუფლდება.
iOS-ზე ARC (ავტომატური მიმთითებლების გამრავლება) ეს რეალიზებულია Objective-C/Swift კომპილატორის და runtime-ის მიერ. დეველოპერი ჩვეულებრივ არ წერს კოდს გამრავლებისთვის ხელით, მაგრამ უნდა აკონტროლოს ძლიერი და სუსტი მიმთითებლები, რათა თავიდან აიცილოს ციკლური დამოკიდებულებები.
Swift-ის მაგალითი:
class Person {
var name: String
init(name: String) { self.name = name }
}
var p1: Person? = Person(name: "Alice") // გამრავლება = 1
var p2 = p1 // გამრავლება = 2
p1 = nil // გამრავლება = 1
p2 = nil // გამრავლება = 0, ობიექტი გათავისუფლებულია
ამ გზით, მიმთითებლების გამრავლება ჩვეულებრივ რეალიზებულია runtime-ში და ავტომატურად მართვადია.