Junior — Middle
Sistem daxilində obyekt tərəfindən istifadə olunan yaddaşın azad olunması necə baş verir, izah edə bilərsinizmi?
sobes.tech Süni İntellekt
AI-dan cavab
iOS-da obyektlərin yaddaşdan azad olunması əsasən ARC (Avtomatik Referans Sayımı) mexanizmi ilə həyata keçirilir.
Hər bir obyekt yaddaşda referans sayğacına malikdir: ona aktiv olaraq istinad edənlərin sayı. Obyektə istinad yaradıldıqda, sayğac artır; istinad silindikdə isə 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: "Alex") // referans sayğacı = 1
var person2 = person1 // referans sayğacı = 2
person1 = nil // referans sayğacı = 1
person2 = nil // referans sayğacı = 0, obyekt azad edilir
Əgər döngüvi istinadlar (məsələn, bir-birinə istinad edən iki obyekt) mövcuddursa, ARC avtomatik olaraq yaddaşı azad edə bilməz. Bunun üçün zəif (weak) və ya mülkiyyət olmayan (unowned) istinadlar istifadə olunur; bunlar sayğacı artırmır.