Ի՞նչ դեր ունեն թույլ (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 օբյեկտի պահպանումը հիշողության մեջ, եթե այն այլևս անհրաժեշտ չէ։