Junior — Middle
Ինչու՞ ծրագրավորման մեջ օգտագործվում են թույլ և ուժեղ հղումներ, և ինչպե՞ս են նրանք տարբերվում:
sobes.tech AI
Պատասխան AI-ից
Ծրագրավորման մեջ, հատկապես հիշողության կառավարման ժամանակ, օգտագործվում են ուժեղ (strong) և թույլ (weak) հղումներ՝ օբյեկտների կյանքի ցիկլը վերահսկելու և հիշողության արտահոսքերը կանխելու համար:
- Ուժեղ հղում պահպանում է օբյեկտը հիշողության մեջ, քանի դեռ առնվազն մեկ ուժեղ հղում կա։ Գործողության հավաքիչը այն չի հեռացնի։
- Թույլ հղում չի խոչընդոտում օբյեկտի հեռացմանը։ Եթե միայն թույլ հղումներ մնան, այն կարող է ազատվել հիշողությունից։
Այս մոտեցումը կարևոր է ցիկլային հղումների կանխարգելման համար, երբ երկու օբյեկտներ միմյանց հղում են ուժեղ հղումներով, և գործողության հավաքիչը չի կարող դրանք հեռացնել։ Այդ դեպքերում, մեկը հղումներից դարձնում են թույլ։
Swift-ում օրինակ՝
class Person {
var name: String
weak var apartment: Apartment? // թույլ հղում
init(name: String) {
self.name = name
}
}
class Apartment {
var unit: String
var tenant: Person? // ուժեղ հղում
init(unit: String) {
self.unit = unit
}
}
let john = Person(name: "John")
let apt = Apartment(unit: "4A")
john.apartment = apt
apt.tenant = john
Այստեղ, apartment հղումը թույլ է, որպեսզի կանխվի Person և Apartment միջև ցիկլային պահպանումը։