Junior — Middle
Môžete vysvetliť, čo znamená používanie slabého odkazu na self v uzáveroch?
sobes.tech AI
Odpoveď od AI
Použitie slabého odkazu (weak reference) na self v uzávierkach v iOS (Swift) pomáha predísť cyklom udržiavania (retain cycles), ktoré vedú k únikom pamäti. Keď uzávierka zachytí self ako silný odkaz a self obsahuje tento uzávier, udržiavajú sa navzájom a pamäť sa neuvoľní.
Príklad:
class MyClass {
var closure: (() -> Void)?
func setup() {
closure = { [weak self] in
guard let self = self else { return }
self.doSomething()
}
}
func doSomething() {
print("Action")
}
}
Tu [weak self] znamená, že vo vnútri uzávierky bude self slabou referenciou, a ak objekt bude zničený, referencia sa stane nil, čím sa predíde únikom pamäti.