Junior — Middle
Můžete vysvětlit koncept Capture List v kontextu jazyka Swift a jeho použití?
sobes.tech AI
Odpověď od AI
V Swiftu je Capture List mechanismus, který umožňuje řídit, jak zachytává closure proměnné z okolního prostředí, zejména pro správu paměti a prevenci cyklů udržení (retain cycles).
Capture List se zapisuje do hranatých závorek před tělem closure a určuje, jakým způsobem mají být proměnné zachyceny: silnou referencí (strong), slabou (weak) nebo bez vlastníka (unowned).
Příklad:
class ViewController {
var name = "Main"
func setup() {
let closure = { [weak self] in
guard let self = self else { return }
print(self.name)
}
closure()
}
}
Zde [weak self] zabraňuje silnému cyklu udržení mezi closure a objektem self, což je důležité pro správné uvolnění paměti.
Tímto způsobem Capture List pomáhá spravovat životní cyklus objektů uvnitř closure a vyhýbat se únikům paměti.