iphone ios fonctionnant dans un fil séparé

Quelle est la meilleure façon d'exécuter du code sur un thread séparé? Est-ce:

[NSThread detachNewThreadSelector: @selector(doStuff) toTarget:self withObject:NULL]; 

Ou:

  NSOperationQueue *queue = [NSOperationQueue new]; NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(doStuff:) object:nil; [queue addOperation:operation]; [operation release]; [queue release]; 

J'ai fait la deuxième façon, mais le livre de cuisine Wesley que j'ai lu utilise le premier.

À mon avis, le meilleur moyen est avec libdispatch, alias Grand Central Dispatch (GCD). Il vous limite à iOS 4 et plus, mais c'est tellement simple et facile à utiliser. Le code pour effectuer un traitement sur un thread d'arrière-plan, puis faire quelque chose avec les résultats dans la boucle d'exécution principale est incroyablement facile et compact:

 dispatch_async( dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ // Add code here to do background processing // // dispatch_async( dispatch_get_main_queue(), ^{ // Add code here to update the UI/send notifications based on the // results of the background processing }); }); 

Si vous ne l'avez pas déjà fait, regardez les videos de WWDC 2010 sur libdispatch / GCD / blocks.

La meilleure façon pour le multithreading dans iOS est d'utiliser GCD (Grand Central Dispatch).

 //creates a queue. dispatch_queue_t myQueue = dispatch_queue_create("unique_queue_name", NULL); dispatch_async(myQueue, ^{ //stuffs to do in background thread dispatch_async(dispatch_get_main_queue(), ^{ //stuffs to do in foreground thread, mostly UI updates }); }); 

Je voudrais essayer toutes les techniques que les gens ont posté et voir qui est le plus rapide, mais je pense que c'est la meilleure façon de le faire.

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

J'ai ajouté une catégorie sur NSThread qui vous permettra d'exécuter des threads dans des blocs avec facilité. Vous pouvez copyr le code d'ici.

https://medium.com/@umairhassanbaig/ios-how-to-perform-a-background-thread-and-main-thread-with-ease-11f5138ba380