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.