Sobes.tech
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.