Eu estava apenas curioso para saber como abordaria isso. Se eu tivesse uma função e quisesse que algo acontecesse quando ela fosse totalmente executada, como adicionaria isso à função? obrigado
function
swift
completionhandler
traw1233
fonte
fonte
Respostas:
Digamos que você tenha uma função de download para baixar um arquivo da rede e deseja ser notificado quando a tarefa de download for concluída.
Espero que ajude.
fonte
Tive dificuldade em entender as respostas, então presumo que qualquer outro iniciante como eu possa ter o mesmo problema que eu.
Minha solução faz o mesmo que a resposta principal, mas espero que seja um pouco mais clara e fácil de entender para iniciantes ou pessoas com dificuldade de entender em geral.
Para criar uma função com um manipulador de conclusão
usar a função
Sua saída será
Espero que isto ajude!
fonte
Exemplo simples de Swift 4.0:
Como usá-lo:
fonte
Podemos usar Closures para este propósito. Tente o seguinte
Em algum ponto, podemos chamar essa função conforme fornecido a seguir.
Consulte o link a seguir para obter mais informações sobre fechamentos .
https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Closures.html
fonte
Swift 5.0 +, simples e curto
exemplo:
Estilo 1
Estilo 2
Usar:
Resultado
fonte
Estou um pouco confuso sobre manipuladores de conclusão personalizados. No seu exemplo:
Digamos que você tenha uma função de download para baixar um arquivo da rede e deseja ser notificado quando a tarefa de download for concluída.
Seu
// download code
continuará sendo executado de forma assíncrona. Por que o código não iria direto para vocêlet flag = true
ecompletion Handler(success: flag)
sem esperar que o código de download fosse concluído?fonte
Além do acima: O fechamento à direita pode ser usado.
fonte