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.