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