Sobes.tech
Junior — Middle

Կարող եք բացատրել, թե ինչ է նշանակում օգտագործել թույլ հղում self-ին փակագծերում?

sobes.tech AI

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

iOS (Swift)-ում փակոցներում (closures) self-ի վրա թույլ չտվող հղում (weak reference) օգտագործելը օգնում է խուսափել պահման շրջաններից (retain cycles), որոնք հանգեցնում են հիշողության լքման։ Երբ փակոցը բռնում է self-ը որպես ուժեղ հղում, և self-ը պարունակում է այդ փակոցը, նրանք միմյանց պահում են, և հիշողությունը չի ազատվում։

Օրինակ՝

class MyClass {
    var closure: (() -> Void)?

    func setup() {
        closure = { [weak self] in
            guard let self = self else { return }
            self.doSomething()
        }
    }

    func doSomething() {
        print("Action")
    }
}

Այստեղ [weak self] նշանակում է, որ փակոցում self-ը կլինի թույլ հղում, և եթե օբյեկտը ոչնչացվի, հղումը կդառնա nil, ինչը կանխում է հիշողության լքումը։