Sobes.tech
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.