Sobes.tech
Junior — Middle

Můžete vysvětlit, co znamená použití slabé reference na self v uzávěrech?

sobes.tech AI

Odpověď od AI

Použití slabého odkazu (weak reference) na self v uzávěrech v iOS (Swift) pomáhá zabránit cyklům udržení (retain cycles), které vedou k únikům paměti. Když uzávěr zachytí self jako silný odkaz a self obsahuje tento uzávěr, udržují se navzájem a paměť se neuvolní.

Příklad:

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

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

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

Zde [weak self] znamená, že uvnitř uzávěru bude self slabým odkazem, a pokud bude objekt zničen, odkaz se stane nil, čímž se zabrání úniku paměti.