J'essaie donc de faire tous mes appels REST qui téléchargent des données sur le thread d'arrière-plan afin que l'interface utilisateur reste réactive.Ajout de NSOperation à NSOperationQueue qui démarre asynchrone ASIHTTPRequest
J'ai un viewcontroller qui contient une NSOperationQueue. Je crée une instance de ma classe d'importateur qui est une sous-classe de NSOperation. À l'intérieur de la méthode main() de mon importateur, je configure un ASIHTTPDataRequest. Je crée la demande, puis son heure de lancer la demande.
Problème: J'ai rencontré un problème lors du démarrage de la demande en appelant "startAsynchronous" sur la demande. Les rappels délégués ne sont jamais appelés. C'est comme si la requête commençait, téléchargeait ses données, mais n'appelait jamais les méthodes de rappel déléguées.
Ma solution: Tout semble fonctionner correctement (c'est-à-dire, les rappels, etc.) lorsque je lance la requête de manière synchrone. Est-ce la bonne solution?
Pourquoi l'appel synchrone fonctionne-t-il, mais pas l'asynchrone? Je modélise ma classe d'importateurs après l'exemple "TopSongs" d'Apple.
En dehors de moi en utilisant ASIHTTPRequest au lieu de NSURLConnection, les échantillons "TopSongs" font la même chose que moi. Il utilise [[NSURLConnceciton alloc] initWithRequest: demande délégué: self]; ce qui est asynchrone aussi, et cela fonctionne bien. Donc, il me semble que c'est quelque chose à voir avec l'appel startAsynchronous de ASIHTTPReqeust. – Bryan
avez-vous utilisé le code comme ceci: do { [[NSRunLoop currentRunLoop] runMode: NSDefaultRunLoopMode beforeDate: [NSDate distantFuture]]; } while (! Done); – jamapag
oui. Je suspecte quelque chose à l'intérieur de ASIHTTPRequest qui cause ce problème. Débogage du test asynchrone Je trouve qu'il n'atteint jamais la ligne après la boucle "do ... while" que vous avez listée ci-dessus. C'est comme si le code tombait dans l'instruction do/while et n'exécutait jamais de code en dessous. – Bryan