Sobes.tech
Junior — Middle

Kdy je vhodné použít slabé odkazování pomocí 'weak let'?

sobes.tech AI

Odpověď od AI

Slabý odkaz s pomocí weak let v Swiftu se používá k prevenci cyklů silných odkazů (retention cycles), zejména v closures a delegatech. Je vhodný, když objekt, na který odkazujete, může být deinitializován, a nechcete ho udržovat v paměti.

Například v closure, která zachycuje self, se pro zabránění únikům paměti používá slabý odkaz:

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

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

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

Zde weak zabraňuje udržování self v closure, což umožňuje uvolnění ViewController z paměti, když již není potřeba.