Junior — Middle
V ktorých prípadoch v jazyku Swift je potrebné použiť anotáciu @escaping pre uzávierky?
sobes.tech AI
Odpoveď od AI
V jazyku Swift sa anotácia @escaping používa na uzávery (closures), ktoré môžu byť volané po ukončení funkcie, do ktorej boli odovzdané. To sa deje, ak sa uzáver uloží na neskoršie použitie, napríklad v asynchrónnych operáciách alebo pri ukladaní do vlastností.
Príklad situácie, kedy je potrebné použiť @escaping:
func performAsyncTask(completion: @escaping () -> Void) {
DispatchQueue.global().async {
// Asynchrónna práca
completion() // volanie uzáveru po opustení funkcie
}
}
Ak sa uzáver volá vo vnútri funkcie pred jej ukončením, @escaping nie je potrebné. Ak je však uzáver uložený alebo volaný neskôr, kompilátor požaduje @escaping.
Toto je spojené s riadením životnosti uzáveru a prevenciou chýb s pamäťou.