2010-03-10 5 views
0

J'ai une application qui doit télécharger au moins 5 photos sur un serveur en utilisant l'appel API disponible avec le serveur. Pour cela, je prévois d'utiliser des threads qui se chargeront de télécharger des photos et le processus principal peut continuer avec la navigation des vues etc. Ce que je ne peux pas décider est de savoir s'il est OK de générer cinq threads séparés dans iphone ou utiliser un seul thread cela fera le téléchargement. Dans les derniers cas, évidemment, cela deviendra assez lent. Fondamentalement, une requête HTTP POST sera faite au serveur avec l'objet NSMutableURLRequest en utilisant NSCOnnection. Plus de threads signifient plus de complexité et de problèmes de synchronisation, mais je peux essayer d'écrire du code aussi soigné que possible si cela signifie de meilleures performances qu'un thread simple qui est un vrai bouchon si les performances sont prises en compte. Toute personne ayant une expérience dans cette application. ??Téléchargement de photos de l'application iPhone sur le serveur à partir des fils de l'application

Répondre

1

Je suggère d'utiliser un thread supplémentaire et de mettre en file d'attente les téléchargements, l'un après l'autre. Vous finirez par obstruer les interfaces réseau si vous essayez 5 téléchargements simultanément. Rappelez-vous que l'iPhone sera souvent sur une connexion 3G ou même EDGE, pas toujours WiFi, donc les téléchargements de photos peuvent être très lent, et même plus lent s'il y en a 5 à la fois.

Vous pourriez probablement bénéficier de l'utilisation de NSOperation et NSOperationQueue pour gérer gentiment l'enfilage laide pour vous. Enveloppez un processus de téléchargement dans un NSOperation, puis en file d'attente 5 pour chaque image. Devrait fonctionner très bien.

0

Jasarien merci pour le bit sur NSOperation et NSOperationQueue. Il a simplifié dans une grande mesure. Mais maintenant j'ai rencontré un problème majeur. Je génère un thread supplémentaire à partir du thread principal. Ce thread met en file d'attente chaque opération de téléchargement d'image. Ainsi, ce thread met en file d'attente 5 opérations d'opérations d'image dans une file d'attente. C'est très bien lorsque vous travaillez avec Mac PC. Maintenant, quand je pousse l'application sur l'appareil, une seule photo est réussie et le reste échoue. La plupart des cas d'échec sont dus à une erreur d'expiration du serveur. Donc, fondamentalement, je me demande, si NSOperationQueue assurer une seule opération à la fois ou non? Je veux dire si le premier téléchargement de la photo est en cours et que l'opération suivante est déjà ajoutée dans la file d'attente. Cela créerait-il un thread supplémentaire pour la deuxième opération aussi pendant que le premier est en cours d'exécution? Je pense que comme son nom l'indique, il doit attendre dans la file jusqu'à ce que le précédent soit terminé. Je ne sais pas comment y aller. Je télécharge pic qui sont prises avec l'appareil photo iphone.

Questions connexes