Sobes.tech
Junior — Middle

Qual é a diferença entre a anotação @Escaping e as funções padrão numa linguagem de programação?

sobes.tech IA

Resposta da IA

A anotação @escaping em Swift (linguagem iOS) é usada para indicar que um encerramento (closure) pode ser chamado após a saída da função na qual foi passado.

Por padrão, os encerramentos em Swift são considerados não-escaping, ou seja, devem ser chamados dentro do corpo da função. Se o encerramento for armazenado, por exemplo, em uma propriedade ou chamado de forma assíncrona mais tarde, deve ser marcado como @escaping.

Isto é importante para a gestão de memória e para evitar vazamentos, pois encerramentos @escaping podem capturar self e requerem o uso explícito de self. dentro.

Exemplo:

func performAsyncTask(completion: @escaping () -> Void) {
    DispatchQueue.global().async {
        // Trabalho assíncrono
        completion() // chamada após sair da função
    }
}

Assim, @escaping difere dos encerramentos padrão (não-escaping) ao permitir que o encerramento viva por mais tempo que a execução da função e seja chamado posteriormente.