Junior — Middle
Ar galite paaiškinti, ką reiškia @escaping anotacija Swift?
sobes.tech AI
Atsakymas iš AI
Swift kalboje @escaping žymuo naudojamas nurodyti, kad uždarymas (closure), perduotas funkcijai, gali būti iškviestas po pačios funkcijos pabaigos. Tai svarbu, kai uždarymas yra saugomas ir iškviečiamas asinchroniškai, pavyzdžiui, tinklo užklausų atgaliniuose kvietimuose.
Be @escaping, uždarymas laikomas ne-escaping (nepabėgantis), tai yra, jis turi būti iškviestas funkcijos kūne ir negali būti saugomas vėlesniam iškvietimui.
Pavyzdys:
func fetchData(completion: @escaping () -> Void) {
DispatchQueue.global().async {
// Asinchroninis darbas
completion() // uždarymo iškvietimas po išėjimo iš fetchData
}
}
Čia completion pažymėtas kaip @escaping, nes jis iškviečiamas asinchroniškai po išėjimo iš fetchData.