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, ինչը կանխում է հիշողության լքումը։