Sobes.tech
Junior — Middle

İstinad məlumat tipləri üçün yaddaşın bölgüsü və azad edilməsi necə həyata keçirilir?

sobes.tech Süni İntellekt

AI-dan cavab

iOS-da, istinad tipləri (məsələn, siniflər) üçün yaddaş dinamik olaraq yığma (heap) yaddaşında ayrılır. Sinif obyekti yaradıldıqda, sistem ona yığma yaddaşında yaddaş ayırır və həmin obyektə referans qaytarır.

Yaddaşın azad olunması avtomatik referens sayma (ARC — Automatic Reference Counting) ilə həyata keçirilir. Hər bir obyekt ona aktiv referansların sayını saxlayan sayğac saxlayır. Yeni referans yaradıldıqda, sayğac artır, və referans silindiyində və ya nil-ə çevrildikdə, azaldılır. Sayğac sıfıra çatdıqda, obyekt avtomatik olaraq yaddaşdan silinir.

Misal:

class Person {
    var name: String
    init(name: String) {
        self.name = name
    }
}

var person1: Person? = Person(name: "Иван") // referans sayğacı = 1
var person2 = person1 // referans sayğacı = 2
person1 = nil // referans sayğacı = 1
person2 = nil // referans sayğacı = 0, Person obyekti yaddaşdan silinir

Bu yolla, proqramçı yaddaşı əl ilə boşaltmağa ehtiyac duymur — ARC bunu avtomatik idarə edir.