Junior — Middle
Программалоодо алсыз жана күчтүү шилтемелер эмне үчүн колдонулат жана алар эмнеге айырмаланат?
sobes.tech AI
AIден жооп
Programmalaşmada, xüsusən yaddaşın idarə olunmasında, obyektlərin həyat dövrünü nəzarət 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ı onu silməyəcək.
- Zəif istinad obyektin silinməsinə 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, istinadlardan biri 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.