NSURLDownload et delegate
yageek
Membre
Bonjour,
j'aurai une petite question de compréhension liée à un problème que je rencontre avec l'utilisation de NSURLDownload et NSThread. J'ai peur de ne pas bien comprendre la phrase de la documentation NSURLDownload initWithRequest :
j'aurai une petite question de compréhension liée à un problème que je rencontre avec l'utilisation de NSURLDownload et NSThread. J'ai peur de ne pas bien comprendre la phrase de la documentation NSURLDownload initWithRequest :
"Delegate messages will be sent on the thread which calls this method. For the download to work correctly the calling thread's run loop must be operating in the default run loop mode."
Je ne comprends pas cette phrase vu que pour moi dans un thread, tu a accès à toutes les instances de tout les trends du programme.(ou bien?)
Je pense que l'erreur dans mon programme vient de la non compréhension de cette phrase, j'explique :
J'ai mon thread principal, qui appelle un autre thread. Dans ce deuxième thread, j'appelle NSURLDownload initWithRequest. Cependant, je n'ai pas les messages delegate. Ils s'apparaissent seulement si j'appelle NURLDownload dans le thread principale.
Il faut savoir que l'appel à NSURLDownload initWithrequest est dans une instance de classe initialisée dans le thread principal.
Pour plus d'informations : https://github.com/YaGeek/iSpoiler
Ma classe NetworkManager gère les connexions.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Maintenant, il faut m'expliquer l'utilité des threads pour un processus asynchrone comme NSURLDownLoad !
Les trucs à savoir pour les process asynchrone en NSThread / NSOperation :
Si tu lance un travail asynchrone dans un thread sans bloquer la fin d'exécution de la méthode principale ton thread sera détruit avant que tu ne récupère quoi que ce soit.
Mais comme l'a dit mpergand, pourquoi un thread vu que tu es déjà sur de l'asynchrone ?
Pour ce qui concerne le point 4 j'utilise cette fameuse classe, mais je ne comprenais pas pourquoi je n'arrive pas à récupérer les messages envoyé normalement au delegate. Seulement, je début sous Cocoa et je ne sais pas si c'est la bonne manière de faire. Comment fait on proprement ?
Mais quelqu'un peut il m'expliquer cette phrase ?
Merci pour les réponses en tout cas :-)
EDIT : Nan mais je vais essayer de tout passer en asynchrone, je pense que ça sera plus propre. Mais je reste curieux sur la phrase de la documentation.
Je t'ai répondu plus haut, ton thread secondaire fini avant l'appel des méthodes du delegate. Tu dois le bloquer jusqu'à récupérations de tous les delegates.
L'approche asynchrone en thread n'est pas la bonne.
La déclaration correspondante :
Et du coup j'ai commencé à chercher le ^(..) {...} et void (^) sous google et je n'ai rien trouvé /sad.png' class='bbc_emoticon' alt=':(' />
Comment ça s'appelle et savez vous où je pourrais trouver de l'information dessus ?
Il y a aussi une vidéo de la WWDC sur le sujet, qui couvre l'essentiel. Encore faut-il comprendre l'anglais parlé.
http://cocoaheads.fr/2011/05/slides-de-la-session-davril-a-rennes/