Sobes.tech
Junior — Middle

Kedy je vhodné použiť slabé odkazovanie pomocou 'weak let'?

sobes.tech AI

Odpoveď od AI

Slabá referencia s pomocou weak let v Swift sa používa na prevenciu cyklov silných odkazov (retention cycles), najmä v closures a delegate-och. Je vhodná, keď objekt, na ktorý sa odkazuje, môže byť deinitializovaný, a nechcete ho udržiavať v pamäti.

Napríklad, v closure, ktorá zachytáva self, sa na zabránenie únikom pamäti používa slabý odkaz:

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

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

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

Tu weak zabraňuje udržiavaniu self v closure, čo umožňuje, aby ViewController bol uvoľnený z pamäti, keď už nie je potrebný.