Junior — Middle
Երբ է տեղի ունենում հիշողության ավտոմատ ազատում այն օբյեկտի համար, որի մասին ցույց է տալիս ուժեղ հղումների հաշվիչը, և այն հասանելի չէ?
sobes.tech AI
Պատասխան AI-ից
Ավտոմատ կերպով հիշողության ազատում տեղի է ունենում այն ժամանակ, երբ ուժեղ հղումների հաշվիչը այդ օբյեկտի համար հասնում է զրոյի, այսինքն՝ երբ ոչ մի ուժեղ հղում չի ցույց տալիս օբյեկտին:
Այս պահին օբյեկտը դառնում է անհասանելի և կարող է հեռացվել հիշողության կառավարման համակարգից (iOS-ում ARC): Եթե առնվազն մեկ ուժեղ հղում կա, օբյեկտը մնում է հիշողության մեջ:
Օրինակ՝
class MyClass {}
var a: MyClass? = MyClass() // ուժեղ հղումների հաշվիչը = 1
var b = a // ուժեղ հղումների հաշվիչը = 2
a = nil // ուժեղ հղումների հաշվիչը = 1
b = nil // ուժեղ հղումների հաշվիչը = 0, օբյեկտը ազատվում է
Այսպիսով, հիշողության ազատումը տեղի է ունենում ավտոմատ, երբ օբյեկտը այլևս անհրաժեշտ չէ և նրա վրա ուժեղ հղումներ չկան։