Junior — Middle
У чему се разликује annotation @Escaping од стандардних функција у програмском језику?
sobes.tech АИ
Одговор од АИ
Napomena @escaping u Swift-u (iOS jezik) koristi se za označavanje da se zatvaranje (closure) može pozvati nakon izlaska iz funkcije u kojoj je predato.
Podrazumevano, zatvaranja u Swift-u se smatraju non-escaping, što znači da moraju biti pozvana unutar tela funkcije. Ako se zatvaranje čuva, na primer, u svojstvu ili se poziva asinhrono kasnije, mora biti označeno kao @escaping.
Ovo je važno za upravljanje memorijom i sprečavanje curenja, jer @escaping zatvaranja mogu uhvatiti self i zahtevaju eksplicitno korišćenje self. unutar.
Primer:
func performAsyncTask(completion: @escaping () -> Void) {
DispatchQueue.global().async {
// Asinhroni rad
completion() // poziv nakon izlaska iz funkcije
}
}
Na ovaj način, @escaping se razlikuje od standardnih (non-escaping) zatvaranja time što omogućava zatvaranju da živi duže od vremena izvršavanja funkcije i da se pozove kasnije.