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.