Swift-də referans tiplər üçün yaddaş idarəsi necə həyata keçirilir?
sobes.tech Süni İntellekt
AI-dan cavab
Swift-də, referans tipləri (sinflar) üçün yaddaş idarəetməsi avtomatik istinad sayımı (ARC, Automatic Reference Counting) ilə həyata keçirilir. Hər bir obyekt yığma yaddaşda (heap) referans sayğacını saxlayır: bu obyektə aktiv referansların sayı. Yeni referans yaradıldıqda, sayğac artır, və referans istifadə olunmayanda, azaldılır. Sayğac sıfıra çatanda, obyekt avtomatik olaraq yaddaşdan silinir.
Nümunə:
class Person {
var name: String
init(name: String) {
self.name = name
}
}
var a: Person? = Person(name: "Alice") // sayğac = 1
var b = a // sayğac = 2
b = nil // sayğac = 1
a = nil // sayğac = 0, obyekt silinir
İki obyekt bir-birinə istinad etdikdə, yaddaşın sərbəst buraxılmasını əngəlləyən dövrü istinadlar (retain cycles) yaranmaması vacibdir. Bunun üçün zəif (weak) və mülkiyyət sahibi olmayan (unowned) istinadlar istifadə olunur.
Dəyər tipləri (struktur, enumerasiya) yığma yaddaşda saxlanılır və təyin edilərkən kopyalanır, ona görə də ARC onlara tətbiq edilmir.