Sobes.tech
Junior — Middle

Proqramlaşdırmada zəif və güclü istinadlar niyə istifadə olunur və onlar necə fərqlənir?

sobes.tech Süni İntellekt

AI-dan cavab

Proqramlaşdırmada, xüsusən yaddaş idarəsində, obyektlərin həyat dövrünü idarə etmək və yaddaş sızmalarını qarşısını almaq üçün güclü (strong) və zəif (weak) istinadlar istifadə olunur.

  • Güclü istinad obyektin yaddaşda saxlanmasını təmin edir, ən azı bir güclü istinad mövcud olduğu müddətcə. Çöp toplayıcı obyekti silməyəcək.
  • Zəif istinad obyekti silməyə mane olmur. Əgər yalnız zəif istinadlar qalıbsa, o, yaddaşdan azad edilə bilər.

Bu, iki obyektin güclü istinadlar vasitəsilə bir-birinə istinad etdiyi və çöp toplayıcının onları silə bilmədiyi hallarda döngəvi istinadların qarşısını almaq üçün vacibdir. Belə hallarda, bir istinad zəifləşdirilir.

Swift-də nümunə:

class Person {
    var name: String
    weak var apartment: Apartment? // zəif istinad
    init(name: String) {
        self.name = name
    }
}

class Apartment {
    var unit: String
    var tenant: Person? // güclü istinad
    init(unit: String) {
        self.unit = unit
    }
}

let john = Person(name: "John")
let apt = Apartment(unit: "4A")
john.apartment = apt
apt.tenant = john

Burada, apartment zəif istinad olaraq təyin olunub, beləliklə, PersonApartment arasında döngəvi istinad qarşısı alınır.