Sobes.tech
Junior — Middle

Mi a különbség az @Escaping megjegyzés és a standard függvények között egy programozási nyelvben?

sobes.tech MI

Válasz az MI-től

A @escaping megjegyzés Swiftben (iOS nyelv) arra szolgál, hogy jelezze, egy zárójel (closure) a meghívás után is végrehajtható, azaz a függvényen kívül is élhet.

Alapértelmezés szerint a Swiftben a zárójelek nem-escaping típusúak, vagyis a függvény belsejében kell őket meghívni. Ha a zárójel tárolásra kerül, például egy tulajdonságban vagy későbbi aszinkron hívásban, akkor @escaping-ként kell megjelölni.

Ez fontos a memória kezelésében és a szivárgások megelőzésében, mivel az @escaping zárójelek képesek elfogni a self-et, és az self. kifejezett használatát igénylik.

Példa:

func performAsyncTask(completion: @escaping () -> Void) {
    DispatchQueue.global().async {
        // Aszinkron munka
        completion() // hívás a függvény elhagyása után
    }
}

Így az @escaping különbözik a standard (nem-escaping) zárójelektől abban, hogy lehetővé teszi a zárójel hosszabb életét, mint a függvény futási ideje, és később is meghívható.