Je me demandais s'il existe une solution pour déclencher un événement une fois toutes les 30 secondes ou toutes les 30 secondes dans CocoaTouch ObjectiveC.Objectif C équivalent à javascripts setTimeout?
24
A
Répondre
31
Il existe un certain nombre d'options.
Le plus rapide à utiliser est en NSObject
:
- (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay
(Il y a quelques autres avec de légères variations.)
Si vous voulez plus de contrôle ou de pouvoir dire envoyer ce message tous les trente secondes vous avez probablement besoin NSTimer
.
3
+[NSTimer scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:]
Vous pouvez également regarder les autres NSTimer
méthodes
11
Jetez un oeil à la classe NSTimer
:
NSTimer *timer;
...
timer = [[NSTimer scheduledTimerWithTimeInterval:30.0 target:self selector:@selector(thisMethodGetsFiredOnceEveryThirtySeconds:) userInfo:nil repeats:YES] retain];
[timer fire];
Ailleurs vous avez la méthode actuelle que gère l'événement:
- (void) thisMethodGetsFiredOnceEveryThirtySeconds:(id)sender {
NSLog(@"fired!");
}
42
La classe performSelector: a ses limites. Voici le plus proche équivalent setTimeout:
dispatch_time_t delay = dispatch_time(DISPATCH_TIME_NOW, NSEC_PER_SEC * 0.5);
dispatch_after(delay, dispatch_get_main_queue(), ^(void){
// do work in the UI thread here
});
EDIT: Un couple de projets qui fournissent du sucre syntaxique et la possibilité d'annuler l'exécution (clearTimeout):
Questions connexes
- 1. C# C équivalent à l'union
- 2. Objet COM et javascripts
- 3. Objectif C Threading Question
- 4. Propriété malloc objectif c
- 5. avertissements Xcode objectif-c
- 6. Chaîne Aide - Objectif C
- 7. objectif c Comparaison NSString
- 8. Amazon SQS objectif c
- 9. objectif-c si déclaration
- 10. Objectif C NSString problème
- 11. objectif c opérateur sens
- 12. méthodes compréhension c objectif
- 13. Objectif C Formage CGFloat
- 14. deux javascripts en conflit
- 15. objectif tableau d'index retourner c
- 16. setter objectif-c 2d-tableau
- 17. Accès DOM Webkit Objectif C
- 18. Objectif C -std = c99 utilisation
- 19. Math Question en C ou Objectif C
- 20. C# équivalent à DigestUtils.md5Hex de Java (chaîne)?
- 21. C# Convert.ToInt16 (Chaîne) C Équivalent
- 22. C# équivalent de C++ mem_fun?
- 23. PathCanonicalize équivalent en C#
- 24. équivalent ungetc de C#
- 25. Objectif C - accéder BOOL ivar du pointeur vide à soi
- 26. Obtenir une image à partir de l'URL Objectif C
- 27. confusion Objectif C - Cadre sythesized vars à Ivars
- 28. objectif-c "méthode de mutation envoyée à l'objet immuable" erreur
- 29. C# Java HashMap équivalent
- 30. équivalent char * dans C#
Savez-vous si cela exploite 'dispatch_after' à tout moment? – Jacksonkr
Ma supposition est probablement non (GCD est de niveau C et ne "sait" pas sur les sélecteurs, aussi cette API est antérieure à GCD) mais il est possible qu'elle l'utilise sous le capot. –