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