Sobes.tech
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 միջև ցիկլային պահպանումը։