同期NSUrlConnectionと非同期NSUrlConnectionの違いは何ですか?同期または非同期がありますか? connectionDidFinishLoadingメソッドでdetachNewThreadSelectorを使用すると、 非同期NSUrlConnectionですか?これは最善の方法ですか?チュートリアル...正確にNSUrlConnection非同期はどういう意味ですか?
答えて
同期は、NSURLConnection
要求をトリガーし、完了するまで待つことを意味します。
非同期は、NSURLConnection
がデータをダウンロードしている間にリクエストをトリガーして他の処理を実行できることを意味します。
どちらが「ベスト」ですか?
同期は非常に簡単です:同期を確立し、起動し、データが戻ってくるのを待ちます。しかし、アプリケーションがそこに着いて、すべてのデータがダウンロードされるか、何らかのエラーが発生するか、要求がタイムアウトするまで何もしません。少量のデータ以上のものを扱っている場合、ユーザーは待っていますが、ユーザーの利便性を損なうものではありません。
非同期ではもう少し作業が必要ですが、ユーザーがリクエストを処理している間に他の処理を行うことができます。データが入ってくるのを追跡できるようにするデリゲートメソッドをいくつか設定します。これはダウンロードの進行状況を追跡するのに便利です。このアプローチはおそらく、ほとんどの使用例にとっては優れています。
NSURLConnection
で同期要求と非同期要求の両方を実行できます。 Appleのdocumentationは、後者のアプローチに必要な2つのアプローチと代理メソッドを明確に説明しています。
同期/非同期接続とスレッドを組み合わせているようです。私のアプリでは、スレッド化の代わりに非同期接続を使用しました。
大きなファイルをダウンロードして、UIをフリーズさせたくないとします。 2つの基本的なオプションがあります:
非同期接続。
+ connectionWithRequest:delegate:
(または他の非自動解放オプションの1つ)から始まり、興味深いことが起こったときにあなたの代理人を呼び出して、ファイルのビットをダウンロードします。 runloopはまだ動き出しているので、UIは反応的なままです。もちろん、デリゲートが範囲外にならないように注意する必要があります。同期。
+ sendSynchronousRequest:returningResponse:error:
で接続を開始しますが、コードはダウンロードが完了するまで待機します。新しいスレッド(またはCocoaがサポートする上位レベルのスレッド処理の1つ)を生成する必要があります。そうしないと、UIがブロックされます。
どのオプションが「最良」か、または最も苦痛の少ないものは、アプリケーションのアーキテクチャと達成しようとしているものによって異なります。とにかく長時間実行しているプロセス用のスレッドを作成する必要がある場合は、2番目のオプションを使用します。一般的に私は最初のオプションが最も簡単だと言います。
すべてがかなり良いです。documented on Apple's Developer site。
他の回答に記載されていないものは、リクエストのサイズです。たとえば、大きなファイルをダウンロードしている場合は、非同期接続を使用する方が適しています。代理人は到着時にデータのブロックを受け取ります。比較すると、同期メソッドはすべてのデータを使用可能にするまで待機します。デリゲートは、より早く(より良いユーザーエクスペリエンス)レスポンスの処理を開始したり、メモリの代わりにファイルに保存したりすることができます(リソース使用率の向上)。すべてのデータを待たずに応答を停止することもできます。
基本的に、非同期メソッドを使用すると、接続をより詳細に制御できますが、複雑さを犠牲にします。同期メソッドははるかに簡単ですが、メインのUIスレッドでブロックされるので使用しないでください。
ファイルサイズに関するその他の回答に対する回答:ファイルサイズは問題ではないと思います。サーバーが非常に遅く応答し、データの同期をロードしている場合、たとえ3kのような少量のデータを読み込んでいても、UIはフリーズします。
私はあらゆる状況で非同期オプションを使用します。なぜなら、ファイルサイズ、サーバーの応答性、またはネットワークの速度に関して何を得るのか分からないからです。
- 1. Kinesis PUT Limit、正確にはどういう意味ですか?
- 2. Webサービスが非同期であるとはどういう意味ですか?
- 3. 同期と非同期の通信は正確にはどうですか
- 4. は非同期NSURLConnection
- 5. WinExec 0x21を返すが、正確にはどういう意味ですか?
- 6. C++テンプレートのインスタンス化、正確にはどういう意味ですか?
- 7. Azure DocumentDbストレージの制限 - 正確にはどういう意味ですか?
- 8. 非同期サーバーとはどういう意味ですか?私は雑誌を読んでい
- 9. iostreamの正確な意味は、ios_base :: sync_with_stdioとの同期です。
- 10. 非同期NSURLConnectionコール
- 11. nsurlconnection非同期リクエスト
- 12. OpenGL:非推奨とはどういう意味ですか?
- 13. Windbg lm:「延期」とはどういう意味ですか?
- 14. linuxの意味はどういう意味ですか?
- 15. %%はどういう意味ですか?
- 16. 同種性はどういう意味ですか?
- 17. 非同期NSURLConnectionとNSOperation - キャンセル
- 18. 非同期NSURLConnection with NSOperation
- 19. "javascript://"とはどういう意味ですか?そのコードには意味:
- 20. 意味:「クライアント側の非同期フレームワーク」
- 21. どういう意味ですか? OR?
- 22. ファイルを非同期にアップロードするNSURLConnection?
- 23. "NSURLSession APIは高度に非同期です"という意味は何ですか?
- 24. (?i)\\は何ですか?正規表現はどういう意味ですか?
- 25. 正確な非同期タイミング
- 26. プログラミング言語が単純であることは、正確にはどういう意味ですか?
- 27. Googleデータストアの「高度にスケーラブルな」プロパティは、正確にはどういう意味ですか?
- 28. ビュー内の「残りのすべてのプロジェクト」は正確にはどういう意味ですか?
- 29. 非同期プログラミングはマルチスレッドを意味しますか?
- 30. ASP.NET 4の非同期コントローラは意味がありますか?
どのように私は接続が同期または非同期を使用して識別することができますか?次の例が表示された場合、 http://developer.apple.com/iphone/library/samplecode/SeismicXML/ あなたはそれが何を使用したかを教えてくれますか?もしconnectionWithRequest:delegate:非同期を参照し、sendSynchronousRequest:returningResponse:error:は同期を参照していますが、NSUrl接続では両方の例を使用していませんでした。 –