Sobes.tech
Middle

Co víte o capture list v Swiftu?

sobes.tech AI

Odpověď od AI

V Swiftu se seznam zachycení používá v uzávěrech (closures) k řízení zachycení proměnných z okolního kontextu, zejména k prevenci cyklů silných odkazů (retain cycles).

Seznam zachycení se zapisuje do hranatých závorek před tělem uzávěru a umožňuje specifikovat, jakým způsobem budou proměnné zachyceny — silným odkazem (strong), slabým (weak) nebo bez vlastníka (unowned).

Příklad:

class ViewController {
    var name = "Swift"
    lazy var closure: () -> Void = { [weak self] in
        guard let self = self else { return }
        print(self.name)
    }
}

Zde [weak self] zabraňuje udržování silného odkazu na self uvnitř uzávěru, což pomáhá předcházet únikům paměti.

Seznam zachycení je tedy nástrojem pro kontrolu životního cyklu objektů zachycených uzávěrem.