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ý.