Middle
Čo viete o capture liste v Swift?
sobes.tech AI
Odpoveď od AI
V Swift-u se zoznam zachytenia používa v uzávierkach (closures) na riadenie zachytenia premenných z okolia, najmä na zabránenie cyklov silných odkazov (retain cycles).
Zo zoznamu zachytenia sa zapisuje do hranatých zátvoriek pred telom uzávierky a umožňuje špecifikovať, ako budú premenné zachytené — silným odkazom (strong), slabým (weak) alebo bez vlastníka (unowned).
Príklad:
class ViewController {
var name = "Swift"
lazy var closure: () -> Void = { [weak self] in
guard let self = self else { return }
print(self.name)
}
}
Tu [weak self] zabraňuje udržiavaniu silného odkazu na self vnútri uzávierky, čo pomáha predchádzať únikom pamäti.
Zo zoznamu zachytenia je teda nástroj na kontrolu životného cyklu objektov zachytených uzávierkou.