Junior — Middle
Em que casos na linguagem Swift é necessário aplicar a anotação @escaping para closures?
sobes.tech IA
Resposta da IA
Em Swift, a anotação @escaping aplica-se a closures que podem ser chamadas após a conclusão da função na qual foram passadas. Isto acontece se a closure for guardada para uso posterior, por exemplo, em operações assíncronas ou ao ser armazenada em propriedades.
Exemplo de uma situação em que é necessário usar @escaping:
func performAsyncTask(completion: @escaping () -> Void) {
DispatchQueue.global().async {
// Trabalho assíncrono
completion() // chamada da closure após sair da função
}
}
Se a closure for chamada dentro da função antes de ela terminar, @escaping não é necessário. Mas se a closure for guardada ou chamada mais tarde, o compilador exige @escaping.
Isto está relacionado com a gestão do tempo de vida da closure e a prevenção de erros de memória.