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ə, Person və Apartment arasında döngəvi istinad qarşısı alınır.