2011-10-31 3 views
4

Je crée un nouveau thread qui exécute l'une de mes méthodes après une certaine période de temps.Sleep ou Pause NSThread

Maintenant ce que je fais est la suivante:

NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(setUpTimerThread) object:nil]; 
[thread start]; 

la méthode ci-dessus appelle ma méthode setUpTimerThraed, et cette méthode fait un NSTimer et appelle une méthode spécifique i.e. syncData après chaque 1 minute. Maintenant ce que je veux, c'est ma méthode de synchronisation de données envoie des fichiers dans le dossier FTP. et quand jamais il envoie un fichier au FTP je le veux mon "fil" pour être en sommeil pendant un moment.

j'ai utilisé

[NSThread sleepForTimeInterval:3.0]; 

Mais ce blocs de code mon application thread principal. Est-il possible que je ne peux que dormir mon fil "thread" pendant un certain temps de sorte qu'il n'arrêtera pas mon application répondant pendant 3 secondes et ne dort pas mon fil principal. J'espère que vous obtenez ce que je demande aux gars. Payer de l'aide?

Répondre

6

sleepForTimeInterval: dors le thread sur lequel il est appelé. Essayez d'appeler un sommeil sur le fil que vous voulez dormir plutôt que sur le fil principal.

remplacer votre appel de sommeil en cours avec

[self performSelector:@selector(sleepThread) onThread:thread withObject:nil waitUntilDone:YES]; 

mettre en œuvre cette méthode

-(void)sleepThread { 
    [NSThread sleepForTimeInterval:3.0]; 
} 
0

La solution de ColdLogic est juste, mais il est neccesary mettre le drapeau waitUntilDone à YES, sinon la méthode est jamais appelé.