Sobes.tech
Junior — Middle

Explique o que significa o termo 'Escaping closure' no contexto da programação em Swift.

sobes.tech IA

Resposta da IA

Em Swift, o termo "Escaping closure" refere-se a um encerramento que pode ser chamado após a função à qual foi passado já ter concluído sua execução. Por padrão, os encerramentos são considerados não escapantes, ou seja, são chamados dentro do corpo da função e não são armazenados para uso posterior.

O encerramento escapante é usado, por exemplo, em operações assíncronas, quando o encerramento é armazenado e chamado posteriormente, por exemplo, após a conclusão de uma solicitação de rede.

Para indicar esse tipo de encerramento nos parâmetros de uma função, usa-se a palavra-chave @escaping:

func performAsyncOperation(completion: @escaping () -> Void) {
    DispatchQueue.global().async {
        // algum trabalho
        completion() // chamada do encerramento após a conclusão do trabalho
    }
}

Sem @escaping, o compilador não permitirá armazenar o encerramento para chamá-lo após sair da função, a fim de evitar possíveis problemas com a memória e o ciclo de vida dos objetos.