Comment programmer un retard dans l'Swift 3
Dans les versions antérieures de Swift, on pourrait créer un retard avec le code suivant:
let time = dispatch_time(dispatch_time_t(DISPATCH_TIME_NOW), 4 * Int64(NSEC_PER_SEC))
dispatch_after(time, dispatch_get_main_queue()) {
//put your code which should be executed with a delay here
}
Mais aujourd'hui, Swift 3, Xcode automatiquement les changements de 6 choses différentes, mais le message d'erreur suivant s'affiche: "Impossible de convertir DispatchTime.now
à la valeur attendue dispatch_time_t
aka UInt64
."
Comment peut-on créer un délai avant l'exécution d'une séquence de code Swift 3?
Vous devez vous connecter pour publier un commentaire.
Après beaucoup de recherches, j'ai enfin compris ce coup.
Cela crée l'option "attendre" effet de Swift 3 et Swift 4.
Inspiré par une partie de cette réponse.
DispatchQueue.main.asyncAfter(deadline: when)
.firedate
à la place.J'aime une ligne de notation pour les PGCD, il est plus élégant:
Aussi, dans iOS 10, nous avons de nouveaux Minuterie méthodes, par exemple, bloquer l'initialiseur:
(donc retardé l'action peut être annulée)
Btw, gardez à l'esprit: par défaut, la minuterie est ajouté à la valeur par défaut d'exécuter le mode boucle. Cela signifie minuterie peuvent être congelés lors de cette boucle est en mode d'attente (par exemple, lorsque vous faites défiler une UIScrollView)
Vous pouvez résoudre ce problème en ajoutant la minuterie de la spécificité de l'exécuter en mode loop:
À ce post de blog vous pouvez trouver plus de détails.
Essayer la fonction suivante mis en œuvre dans Swift 3.0 et au-dessus de
Utilisation
Essayer le code ci-dessous pour retarder
//Exécute la fonction après x secondes
//Utilisation:-