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.