2009-08-06 6 views
0

Comment utiliser un NSTimer pour faire un compte à rebours ou est-ce encore possible? J'ai essayé quelques trucs et j'ai eu quelques erreurs concernant les nombres, mais wat je veux arriver quand mon minuteur est activé il commence à 5:00 et pour chaque seconde Il enlève je veux un nouveau numéro à apparaître sur mon étiquette si ....NSTimer Question

si (Timer1 == 05:00) {

// étiquette affichera 5

}

Pour une raison quelconque ce code me donne une erreur pour utiliser 5:00 .. aussi je ne pense pas qu'il sera même appelé parce que la minuterie n'activera pas la méthode jusqu'à ce que le temps s'épuise donc je suis coincé:/aucune aide?

Répondre

1

5:00 n'est pas un nombre valide en C ou en Objective-C.

La première chose que vous voulez faire est d'aller lire l'introduction aux tutoriels Objective-C sur developer.apple.com et ensuite, probablement, de faire un suivi avec une sorte de livre de programmation de l'iPhone.

Votre question démontre un manque de compréhension assez complet. Rien de mal à cela - attendez-vous juste à faire un tas d'étude/apprentissage devant vous.

Une fois que vous faites cela, vous serez en mesure de comprendre:

A répéter NSTimer n'est pas garanti à feu toutes les N minutes/secondes/heures/jours (quel que soit votre intervalle est). Il y a du slop; slop considérable en fonction de ce qui se passe lorsque la minuterie se déclenche.

Ainsi, vous voulez créer une minuterie périodique qui se déclenche, mais souvent vous voulez mettre à jour l'interface utilisateur, puis déterminer exactement combien de temps s'est écoulé en utilisant un mécanisme différent.

Prenez le temps de démarrage - [NSDate date] fonctionne bien - stocker quelque part, puis l'utiliser pour déterminer combien de temps est écoulé réellement lorsque les feux de minuterie (en saisissant un autre [NSDate date] et en soustrayant le premier de celui-ci pour obtenir le écoulèrent temps).

+0

Notez également que lorsque vous configurez la l'intervalle de temps pour la minuterie à feu, vous voulez probablement qu'il soit inférieur à une seconde. De cette façon, vous n'aurez pas de problème lorsque votre compte à rebours se déclenchera soudainement 2 secondes dans un saut pour vous rattraper, mais vous remarquerez simplement que vous n'avez rien à faire et que vous revenez plus tôt. –

+0

Avec la mise en garde supplémentaire que plus vous configurez votre minuterie pour plus rapidement, plus la puissance de la batterie que vous allez consommer. – bbum

0

au lieu de cela procéder comme suit: insérer le code suivant où u want minuterie

[NSTimer scheduledTimerWithTimeInterval: (intervalle de temps en secondes) cible: self sélecteur: @selector (timerFired1 :) userInfo : zéro répétitions: NO];

- (void) timerFired1: (NSTimer *) minuterie { // faire les choses ici que vous voulez effectuer après cet intervalle de temps spécifié }