Sobes.tech
Junior — Middle

Ի՞նչ դեր ունեն թույլ (weak) և անտիրական (unowned) հղումները ծրագրավորման լեզուներում հիշողության կառավարումում:

sobes.tech AI

Պատասխան AI-ից

Ճկուն (weak) և սեփական չհամարող (unowned) հղումները օգտագործվում են հիշողության կառավարում և ցիկլային հղումների կանխարգելման համար, որոնք կարող են հանգեցնել հիշողության արտահոսքի:

  • Ճկուն (weak) հղումներ՝ դա հղումներ են, որոնք չեն ավելացնում օբյեկտի հղումների հաշվիչը: Եթե այն օբյեկտը, որի վրա ցույց է տալիս ճկուն հղումը, ջնջվի, ապա այն ավտոմատ կերպով կդառնա nil (Swift-ում): Սա օգտակար է ուժեղ ցիկլերը խուսափելու համար, օրինակ՝ դելեգատի և նրա սեփականատիրոջ միջև:

  • Սեփական չհամարող (unowned) հղումներ՝ նույնպես չեն ավելացնում հղումների հաշվիչը, բայց ենթադրում է, որ օբյեկտը միշտ գոյություն ունի հղման օգտագործման ժամանակ: Եթե օբյեկտը արդեն ջնջված է, ապա unowned հղման մուտքը կհանգեցնի սխալի (crash): Օգտագործվում է, երբ ռեֆերենցիայով օբյեկտի կյանքի ցիկլը երաշխավորված է, որ երկար է հղումից:

Swift-ում օրինակ:

class Person {
    var apartment: Apartment?
}

class Apartment {
    weak var tenant: Person?  // weak, ցիկլը կանխելու համար
}

Այստեղ, weak հղումը կանխում է Person օբյեկտի պահպանումը հիշողության մեջ, եթե այն այլևս անհրաժեշտ չէ։