Sobes.tech
Junior — Middle

Որտե՞ղ է սովորաբար իրականացվում հիշողության կառավարման համար հղումների հաշվիչը։

sobes.tech AI

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

Հղման հաշվիչը հիշողության կառավարման համար սովորաբար իրականացվում է օբյեկտի կամ նրա ծածկույթի (runtime) մակարդակում, որտեղ յուրաքանչյուր օբյեկտ պահում է ակտիվ հղումների թիվը։ Երբ ստեղծվում է նոր հղում, հաշվիչը մեծանում է, իսկ երբ հղումը հեռացվում է՝ նվազում։ Եթե հաշվիչը հասնում է զրոյի, օբյեկտը ազատվում է։

iOS-ում ARC (Ավտոմատ Հղման Հաշվիչ) դա իրականացնում է Objective-C/Swift կոմպիլյատորն ու runtime-ը։ Դավաճանը սովորաբար ձեռքով կոդ չի գրում հաշվիչի համար, բայց պետք է հետևի ուժեղ և թույլ հղումներին՝ խուսափելու համար ցիկլային կախվածություններից։

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

class Person {
    var name: String
    init(name: String) { self.name = name }
}

var p1: Person? = Person(name: "Alice") // հաշվիչ = 1
var p2 = p1 // հաշվիչ = 2
p1 = nil // հաշվիչ = 1
p2 = nil // հաշվիչ = 0, օբյեկտը ազատվում է

Այսպիսով, հղման հաշվիչը սովորաբար իրականացվում է runtime-ում և ավտոմատ կառավարվում։