J'étais juste curieux de savoir comment j'aborderais cela. Si j'avais une fonction et que je voulais que quelque chose se produise lorsqu'elle était entièrement exécutée, comment l'ajouterais-je à la fonction? Merci
function
swift
completionhandler
chalut1233
la source
la source
Réponses:
Supposons que vous disposiez d'une fonction de téléchargement pour télécharger un fichier à partir du réseau et que vous souhaitiez être averti lorsque la tâche de téléchargement est terminée.
J'espère que ça aide.
la source
J'ai eu du mal à comprendre les réponses, donc je suppose que tout autre débutant comme moi pourrait avoir le même problème que moi.
Ma solution fait la même chose que la réponse principale mais, espérons-le, un peu plus claire et facile à comprendre pour les débutants ou les personnes ayant simplement du mal à comprendre en général.
Pour créer une fonction avec un gestionnaire de complétion
pour utiliser la fonction
Votre sortie sera
J'espère que cela t'aides!
la source
Exemple simple de Swift 4.0:
Comment l'utiliser:
la source
Nous pouvons utiliser des fermetures à cette fin. Essayez ce qui suit
À un moment donné, nous pouvons appeler cette fonction comme indiqué ci-dessous.
Veuillez consulter le lien suivant pour plus d'informations concernant les fermetures .
https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Closures.html
la source
Swift 5.0 +, simple et court
exemple:
Style 1
Style 2
Utilisation:
Production
la source
Je suis un peu confus à propos des gestionnaires de complétion personnalisés. Dans votre exemple:
Supposons que vous disposiez d'une fonction de téléchargement pour télécharger un fichier à partir du réseau et que vous souhaitiez être averti lorsque la tâche de téléchargement est terminée.
Votre
// download code
sera toujours exécuté de manière asynchrone. Pourquoi le code n'irait-il pas directement dans votrelet flag = true
etcompletion Handler(success: flag)
sans attendre que votre code de téléchargement soit terminé?la source
En plus de ce qui précède: la fermeture arrière peut être utilisée.
la source