Sobes.tech
Middle

Ինչպես են աշխատում հաշիվները (retention counts) ուժեղ հղումներով iOS-ում?

sobes.tech AI

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

Երբ օբյեկտը նշանակվում է ուժեղ հղումով փոփոխականի, օբյեկտի հղումների հաշվիչը ավելանում է 1-ով: Երբ ուժեղ հղումը դրվում է null կամ դուրս է գալիս տեսադաշտից, հղումների հաշվիչը նվազում է 1-ով: Օբյեկտը դեալոկացվում է, երբ նրա հղումների հաշվիչը հասնում է զրոյի և այլ ուժեղ հղումներ չեն մնացել:

Օրինակ՝

class MyObject {
    deinit {
        // Կոչվում է օբյեկտի դեալոկացիայի ժամանակ
        print("MyObject-ը դեալոկացվել է")
    }
}

var object1: MyObject? = MyObject() // object1 - ուժեղ հղում, MyObject-ի հղումների հաշվիչը == 1
var object2 = object1 // object2 - ուժեղ հղում, MyObject-ի հղումների հաշվիչը == 2

object1 = nil // Ուժեղ հղում object1-ը null է, MyObject-ի հղումների հաշվիչը == 1
object2 = nil // Ուժեղ հղում object2-ը null է, MyObject-ի հղումների հաշվիչը == 0
// MyObject-ը դեալոկացվել է