0

非同期NSURLConnectionsをチェーンするための最も適切な方法は何でしょうか?たとえば、ユーザーをWebサービスに登録する必要があります。ワークフローは次のようになります。登録トークンの取得=>登録にトークンを使用=>ログイントークンの取得=>ログインにトークンを使用。

非同期NSURLConnectionを作成する方法は知っていますが、先に進む前に前の接続が終了したことを確認する方法がわかりません。私はこれを使用してこれを達成できることを知ってNSURLConnection sendSynchronousRequestいますが、これらの連鎖された要求が発生している間、メインスレッドがブロックされるのは好きではありません。

4

3 に答える 3

2

SignMeOut for iPhoneの最初のバージョンを作成したときに、これを正確に実行しました。NSUrlconnectionのサブクラスを作成し、connectionDidFinishで識別タグdoを指定すると、列挙型で単純なスイッチ/ケースを使用できるようになります。うまく機能します-私たちのブログで全体のフローと例とコードを見ることができます

http://www.isignmeout.com/multiple-nsurlconnections-viewcontroller/

アップデート

NSURLConnectionサブクラスをはるかに単純なCategoryに変更しました。ほとんどの使用法は同じですが、同じクラスを使用するとよりクリーンになります

https://github.com/Shein/Categories

于 2012-04-22T14:26:44.107 に答える
1

さまざまなオプションがあります。

  • 可変配列またはディクショナリを使用してキューを作成する
  • NSUrlConnection用の新しい唯一のios5APIと組み合わせて使用​​すると、NSOperationQueueを簡単に作成できます。
  • AFNetworkingなどのサードパーティライブラリ
  • それらをグループ化するGCDをブロックします(NSRunLoopの理由で難しい、接続が実行されているスレッドに注意してください)
于 2012-04-22T14:24:57.880 に答える
1

connectionDidFinishLoadingを参照して、別の非同期接続を開始できます。どの接続が終了したかに関する条件については、他の接続も終了すると予想される場合に備えて、接続への参照を保持できます(おそらくあなたの場合は必要ありません)。クラスを に従って、デリゲート メソッドNSURLConnectionDelegateで適切な接続を起動します。connectionDidFinishLoadingこのconnectionDidReceiveData:メソッドを使用して、サービスから受け取った資格情報などを確認することもできます。ドキュメントも参照してください。

于 2012-04-22T14:14:44.637 に答える