2010-09-07 4 views
0

J'ai une application iPhone qui consomme un service Web Soap. Lorsque j'envoie une demande d'URL, l'application devient lente. Mon application est une application TabBarApplication. À partir d'un service Web appelant démarré pour analyser les données reçues, je ne peux pas sélectionner les onglets dans UITabbarcontroller. Comment accélérer mon application Tabbarcontroller de l'iPhone pour être sélectionné même lorsque l'application reçoit des données du web-service? L'utilisation de NSThread est-elle une bonne solution?Accélérer l'application iPhone lors de la consommation du service Web

Répondre

4

Chaque fois que vous accédez au réseau, faites-le de manière asynchrone, soit en utilisant un thread séparé, soit en utilisant des instances NSURLConnection asynchrones. De cette façon, l'interface utilisateur reste réactive. Ceci ne vient pas gratuitement: Toutes vos vues devront gérer l'état car elles sont d'abord dans l'état "chargement des données" (lorsqu'elles ont soumis une requête) et ensuite, quand les données sont en dernier. est arrivé, ils entrent dans l'état "data loaded" et ont besoin d'être rafraîchis. Si le reqeust échoue, ils passent à l'état "chargement échoué" et présentent un bouton "Réessayer" (ou quelque chose de similaire).

J'ai écrit une application qui obtient toutes ses données à partir d'un service web distant. Il est très rapide et réactif, probablement en raison des faits suivants:

  • Il charge toutes les données de manière asynchrone (avec les instances NSURLConnection).
  • Il utilise JSON au lieu de SOAP car il est plus compact et plus rapide à analyser.
  • Il s'agit d'une compression sur la connexion HTTP.
  • Il ne charge que le moins de données possible sur chaque requête.
Questions connexes