2009-06-30 4 views
0

Je voulais savoir comment utiliser les threads dans Cocoa. Je suis nouveau à ceci donc je ne comprends pas bien la documentation.Utilisation de NSThreads dans Cocoa?

La moitié supérieure du code est pour la synchronisation et la moitié inférieure est pour la date. Quelqu'un peut-il me montrer comment utiliser un seul thread et comment utiliser 2 threads pour gérer les deux opérations.

NSDateFormatter *timeFormatter = [[[NSDateFormatter alloc] init] autorelease]; 
[timeFormatter setDateStyle:NSDateFormatterNoStyle]; 
[timeFormatter setTimeStyle:NSDateFormatterMediumStyle]; 
NSDate *stringTime = [NSDate date]; 
NSString *formattedDateStringTime = [timeFormatter stringFromDate:stringTime]; 
time.text = formattedDateStringTime; 

NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 
[dateFormatter setDateStyle:NSDateFormatterMediumStyle]; 
[dateFormatter setTimeStyle:NSDateFormatterNoStyle]; 
NSDate *stringDate = [NSDate date]; 
NSString *formattedDateStringDate = [dateFormatter stringFromDate:stringDate]; 
date.text = formattedDateStringDate; 
+0

Il est difficile de répondre correctement à cette question, car vous ne devriez pas utiliser NSDateFormatter à partir de n'importe quel thread, à l'exception du thread principal. Vous pouvez reformuler avec un exemple différent. –

+0

Pourquoi ne pas utiliser NSDateFormatter dans un thread séparé? Je ne vois rien dans les documents qui dictent cela. –

Répondre

3

Les fils sont assez faciles à mettre en œuvre. Une minute à apprendre, une vie à maîtriser, disent-ils.

Cela devrait vous aider à démarrer:

http://cocoasamurai.blogspot.com/2008/04/guide-to-threading-on-leopard.html

(applique à l'iPhone OS ainsi)

+0

C'est un document vraiment excellent. J'ai trouvé que NSOperations en combinaison avec NSOperationQueue sont une ressource fantastique ... –

+0

J'ai oublié de mentionner une raison pour laquelle ils sont si excellents, c'est que vous n'avez pas à vous soucier de créer de nouveaux pools autorelease, c'est fait pour vous. –

+0

Oui, nous sommes très chanceux d'avoir de nombreux développeurs géniaux dans le monde de Cocoa qui ne craignent pas de compiler et de partager des informations qui, autrement, prendraient du temps à se rassembler et à comprendre. –

1

Pour des choses rapides, la meilleure façon de le faire est de mettre le code dans des méthodes distinctes, puis appelez:

[self performSelectorInBackground:@selector(formatTime) withObject:nil]; 
[self performSelectorInBackground:@selector(formatDate) withObject:nil]; 

Vous devrez peut-être mettre un NSAutoreleasePool dans la méthode pour arrêter les fuites de mémoire.

En outre, comme cela a été dit par d'autres personnes, le formatage de date n'est pas vraiment quelque chose que vous devriez faire dans un fil séparé.