2012-05-11 1 views
6

HTTP-Anfragen mit NSURLConnection sind ereignisgesteuert. Dies macht die Dinge ein bisschen komisch, wenn Sie nacheinander drei Anfragen stellen müssen, wobei jede Anfrage die Informationen verwendet, die von der vorherigen zurückgegeben wurden.Die beste Methode zum Senden einer Reihe von HTTP-Anfragen mit NSURLConnection

Ich bin es gewohnt, es so zu tun:

response1 = request1(); 
response2 = request2(response1); 
response3 = request3(response2); 

Aber der einzige Weg, den ich finden konnte, wie dies mit NSURLConnection zu tun connectionDidFinishLoading: die nächsten Anforderung zu haben, zu machen. Aber wenn die Anzahl der sequentiellen Anforderungen wächst, kann dies unordentlich werden.

Was ist der idiomatische Weg, um sequentielle HTTP-Anfragen mit Kakao zu behandeln?

Antwort

7

Sie könnten die Anforderungen in eine NSOperation umbrechen und dann Vorgangsabhängigkeiten definieren, sodass jede Anforderung auf ihre abhängigen Anforderungen warten muss, bevor sie ausgeführt wird.

Vom Apple Docs:

Abhängigkeiten sind eine bequeme Möglichkeit, Operationen in einer bestimmten Reihenfolge auszuführen. Mit den Methoden addDependency: und removeDependency: können Sie Abhängigkeiten für eine Operation hinzufügen und entfernen. Standardmäßig wird ein Operationsobjekt, das über Abhängigkeiten verfügt, erst als bereit betrachtet, wenn alle abhängigen Operationsobjekte vollständig ausgeführt wurden. Sobald die letzte abhängige Operation beendet ist, wird das Operationsobjekt jedoch bereit und kann ausgeführt werden.

0

Ich würde Ihnen raten, eine 3rd-Party-Bibliothek namens MKNetworkKit zu verwenden. Es kann die harte Arbeit für Sie erledigen, damit Sie sich auf die wichtigsten Aspekte Ihrer Anwendung konzentrieren können. Sie können es here finden.

Verwandte Themen