2010-09-14 20 views

Répondre

12

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 
} 
+0

Apparemment vous n'avez pas besoin d'inclure explicitement unistd .h. Xcode 5 semble le faire pour vous. Je ne sais pas comment. – Brenden

4

Ici, vous allez ...

[NSTimer scheduledTimerWithTimeInterval:2 
            target:self 
            selector:@selector(action) 
            userInfo:nil 
            repeats:NO]; 
-1

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.

1

Réponse simple: [NSThread sleepForTimeInterval: 10.0];