Junior — Middle
Môžete vysvetliť koncept Capture List v kontexte jazyka Swift a jeho použitia?
sobes.tech AI
Odpoveď od AI
V Swiftu je Capture List mehanizam koji omogućava kontrolu nad načinom na koji zatvaranje (closure) hvata promenljive iz okruženja, posebno za upravljanje memorijom i sprečavanje ciklusa zadržavanja (retain cycles).
Capture List se zapisuje u uglastim zagradama pre tela zatvaranja i ukazuje na to kako tačno da se hvataju promenljive: sa snažnom referencom (strong), slabom (weak) ili bez vlasnika (unowned).
Primer:
class ViewController {
var name = "Main"
func setup() {
let closure = { [weak self] in
guard let self = self else { return }
print(self.name)
}
closure()
}
}
Ovde, [weak self] sprečava snažni ciklus zadržavanja između zatvaranja i objekta self, što je važno za pravilno oslobađanje memorije.
Na ovaj način, Capture List pomaže u upravljanju životnim ciklusom objekata unutar zatvaranja i izbegavanju curenja memorije.