2012-03-10 29 views
1

応答を待つ時間は約300msかかるため、カスタムデバイスには1秒間に3-4回のリクエストしか送信できません。遅くなると、「ユーザーのやりとり」の速度が向上します。iOSで応答を待たずにGETリクエストを送信できますか?

今私は、このコードを使用しています:

NSURLRequest* request = [NSURLRequest requestWithURL:[NSURL URLWithString:url] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:0.5]; 
    NSHTTPURLResponse* response = nil; 
    NSError* error = nil; 
    [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 
+0

あなたが '+(void)sendAsynchronousRequest:(NSURLRequest *)リクエストキュー:(NSOperationQueue *)キューcompletionHandlerを使用するのを止めているものは?(void(^)(NSURLResponse *、NSData *、NSError *))handler'?カスタムデバイスがそれらをすべて処理できないほど、非同期リクエストを送信しないようにしてください。 –

+0

いいアイデア、私はそれを使う方法をもっと見つけようとします –

+0

「答え」を追加しました。実際のコーディングを行う必要がありますが、基本的な考え方はうまくいくでしょうし、シーケンスはあなたのデバイスがすべてのリクエスト –

答えて

1

あなたが非同期的に適切にあなたがリクエスト5秒ごとのセットを発射するwan'tしましょう+ (void)sendAsynchronousRequest:(NSURLRequest *)request queue:(NSOperationQueue *)queue completionHandler:(void (^)(NSURLResponse*, NSData*, NSError*))handler

を実装要求を発射できます。最初の要求を発行する繰り返しタイマーを実装できます。リクエストデリゲートがシーケンシャル順にリクエストを発行できるようにすることができます(各デリゲートが次のリクエストを発行します)。非常に単純化されたメタ言語では、次のようになります。this pageの下部に

- repeatingTimer5sHandler { 
    issue1stRequestWithHandler:handlerFor1stRequest; 
} 

- handlerFor1stRequest { 
    handle response 
    issue2ndRequestWithHandler:handlerFor2ndRequest; 
} 

- handlerFor2ndRequest { 
    handle response 
    issue3rdRequestWithHandler:handlerFor3rdRequest; 
} 

- handlerFor3rdRequest { 
    handle response 
    issue4thRequestWithHandler:handlerFor4thdRequest; 
} 

- handlerFor4thRequest { 
    handle response 
} 

実用的なソリューションです。 1つのリクエストに対してのみですが、開始する必要があります。

+0

あなたのソリューションをありがとう、問題は、ユーザーがプログレスバーの値を変更しているときに、この値がカスタムデバイスに送信されている、それはおおよそゆっくりと進みます。 iOSデバイスのすべての機能をスムーズに行うために、「データフロー」のようなものを作成する機会はありますか? –

+0

プログレスバー自体は大まかになりましたが、現在は値が変更されたアクションを使用しています。別のアクションを使用するか、200mごとにデータを送信することができます。秒か他の何か? –

+0

@HorheGarcia:私はあなたを正しく理解しているかわかりません。あなたがストリーミングのようなデータフローを意味するなら、それは一方通行の「コミュニケーション」でしょう。双方向通信について話しているのであれば、TCPソケットを直接使用してスピードを上げることができます。また、このカスタムデバイスのファームウェア(動作)を管理することができるかどうかという疑問があります。これは、あなたの設計や既成のものです。 –

関連する問題