2013-03-04 1 views
2

dans mon application, j'ai besoin d'appeler un service Web pour obtenir des données (http get). Je suis un nouveau dev ios, je me demande si je devrais envoyer l'appel HTTP get à l'arrière-plan, et apporter des données de recharge de tableview au premier plan comme le code ci-dessous? merci beaucoup!devrais-je envoyer l'appel de service Web à l'arrière-plan sur le développement d'ios

-(void)updateDataInBackground { 
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND,0), ^(void) { 

     // hard work/updating here 

     // when finished ... 
     [self reloadTable]; 
    }); 
} 

-(void)reloadTable { 
     dispatch_async(dispatch_get_main_queue(), ^(void) { 
      [myTableView reloadData]; 
     }); 
} 
+0

Pourquoi vous avez besoin pour exécuter les services Web en arrière-plan, cant vous même lorsque l'application vient d'arrière-plan? –

+0

duplication possible de [IOS Grand Central Dispatch avec la méthode de rappel] (http://stackoverflow.com/questions/13115657/ios-grand-central-dispatch-with-callback-method) –

+1

Ce code me semble correct. BTW c'est "premier plan", pas "front ground" ;-) – trojanfoe

Répondre

3

Pour des résultats parfaits et complets utilisent ce code:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 

     @autoreleasepool { 
      //your webservice operations here 
     } 

    }); 
+0

Cela fonctionne bien, mais existe-t-il un autre moyen d'exécuter le service Web avec plus de vitesse en arrière-plan. –

+0

Comme la plupart des applications sur App Store, utilisez la bibliothèque AFNetworking pour les services Web d'appel. Vous pouvez comparer votre vitesse après utilisation aussi. Vous pouvez télécharger AFNetworking ci-dessous l'URL. https://github.com/AFNetworking/AFNetworking –

+0

Merci, ça m'a aidé. –

Questions connexes