Je veux produire un délai de 2 secondes en utilisant NSTimer comment initialiser le minuteur dans le programme?Je devrais pouvoir retarder 2 secondes using NSTimer. Comment faire?
Répondre
Plusieurs options ici.
Si vous voulez juste un délai de 2 secondes vous pouvez utiliser le sleep() fonction
#include<unistd.h>
...
sleep(2);
Ou vous pourriez être en mesure d'utiliser NSTimer comme si
[NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(fireMethod) userInfo:nil repeats:NO];
Et dans votre classe, vous aurait une méthode définie comme
-(void)fireMethod
{
//Do stuff
}
Apparemment vous n'avez pas besoin d'inclure explicitement unistd .h. Xcode 5 semble le faire pour vous. Je ne sais pas comment. – Brenden
Ici, vous allez ...
[NSTimer scheduledTimerWithTimeInterval:2
target:self
selector:@selector(action)
userInfo:nil
repeats:NO];
Notez que vous ne devriez pas vraiment penser à des retards dans une interface utilisateur pilotée par événement/OS Vous devriez penser aux tâches que vous voulez faire maintenant, et aux tâches que vous voulez faire plus tard, et coder ces sous-tâches et les programmer de manière appropriée. par exemple. au lieu de:
// code that will block the UI when done in the main thread
- (void) methodC {
doA();
delay(2);
doB();
}
vous voudrez peut-être avoir un code qui ressemble plus:
- (void) methodA {
doA();
return; // back to the run loop where other useful stuff might happen
}
- (void) methodB {
doB();
}
et vous pouvez alors planifier methodB avec un NSTimer à la fin de methodA, un NSTimer a commencé par tout appelé methodA ou, la meilleure option, par la routine d'achèvement asynchrone de quelque chose démarré par methodA.
Réponse simple: [NSThread sleepForTimeInterval: 10.0];
duplication possible de [iphone NStimer démarrer en 2 secondes] (http://stackoverflow.com/questions/2784809/iphone-nstimer-start-in-2-seconds) –