Objective-C délai d'action avec des blocs
Je sais qu'il existe plusieurs façons de retarder une action en Objective-C comme:
performSelector:withObject:afterDelay:
ou à l'aide de NSTimer
.
Mais il ya une telle fantaisie chose que l'on appelle des blocs où vous pouvez faire quelque chose comme ceci:
[UIView animateWithDuration:1.50 delay:0 options:(UIViewAnimationOptionCurveEaseOut|UIViewAnimationOptionBeginFromCurrentState) animations:^{
}completion:^(BOOL finished){
}];
Malheureusement, cette méthode ne s'applique qu'à animer les choses.
Comment puis-je créer un retard avec un bloc dans une méthode donc je n'ai pas à utiliser tous les @selectors
et sans la nécessité de créer un nouvelle méthode? Merci!
- Cela vous aidera ? stackoverflow.com/questions/15218861/...
- pourquoi avez-vous peur de la création d'une méthode distincte ? cela permettra de résoudre le problème immédiatement.
- parce que j'ai beaucoup de méthodes déjà et je voulais trouver une meilleure façon
- je ne pas sûr que cela va fonctionner, mais vous pouvez essayer de l'appel de méthodes à l'intérieur d'achèvement:^(BOOL fini){ } bloc
- Est votre problème, un message d'avertissement ou d'erreur que vous n'êtes pas mentionner ici?
- le problème, c'est écrit à la fin du post
- Ah, mon problème est simplement que j'ai mal lu votre exemple de code. 🙂 Vous découvert des choses très étranges ordre, mais c'est une bonne question. Merci pour le poster.
Vous devez vous connecter pour publier un commentaire.
utilisation dispatch_after:
popTime
calcul) dans une fonction/méthode, l'e.g[NSObject performBlock:afterDelay:];
Expansion sur la accepté de répondre, j'ai créé une fonction d'aide pour toute personne qui ne se soucie pas de mémoriser la syntaxe à chaque fois qu'ils veulent pour ce faire 🙂 j'ai simplement une Utils classe avec ceci:
Utilisation:
Méthode d'assistance:
Ici est de savoir comment vous pouvez déclencher un bloc après un retard dans l'Swift:
Inclus comme une fonction standard dans mon repo:
https://github.com/goktugyil/EZSwiftExtensions