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 болот, бул жадынын агып кетишин алдын алат.