2

ヘルプは大歓迎です。私はここで立ち往生しています:

UIWebViewにURLをロードし始める前に、応答を調べる必要があります。ただし、同期NSURLConnectionは最初にデータをダウンロードしてから、応答にアクセスできるようにします。これは悪いことです。

非同期NSURLConnectionを使用すると、データを受信する前に応答を調べることができますが、応答を調べることができるのは、デリゲートメソッドconnection:didReceiveResponse:でのみです。ただし、応答が返されるまで待機するように、webViewのデリゲートメソッド(webView:shouldStartLoadWithRequest:navigationType:)に指示する必要があります。両方のデリゲートがメインスレッドにあるため(そうである必要がありますか?そうだと思います)、NSConditionを使用してwebViewのデリゲートを停止することはできません(つまり、メインスレッドを停止することを意味します)。

誰かがこの問題を解決する方法についてアイデアを持っていますか?

前もって感謝します。

4

3 に答える 3

4

ヘッダーだけが必要な場合は、最初に(GETの代わりに)HEADリクエストを行うことができます。これは、本文なしでヘッダーのみを返します。それはあなたがそれを同期的に行うことを検討することができるほど十分に速いかもしれません、しかしあなたは明らかにそれを徹底的にテストしたいと思うでしょう。

更新
実際には、それを同期的に行わないでください。応答サイズが小さい場合でも、リクエストのレイテンシーだけでも、処理したいよりも長くなることがよくあります。

于 2011-12-11T14:59:32.523 に答える
1

を使用してすべてのデータを読み取りNSConnection、それを using にロードUIWebView-loadData:MIMEType:textEncodingName:baseURL:ます。

于 2009-07-24T20:28:32.703 に答える
0

まず、Web データに同期メソッドを使用するべきではありません。遅延が発生する可能性があります。

2 つの呼び出しを行うことをお勧めします。最初に MIME タイプを見つけます。MIME タイプを特定するとすぐに接続がキャンセルされます。完全なデータをダウンロードする場合は 2 番目。これは にロードされる可能性があるためUIWebView、これは不合理ではないようです。

于 2011-10-11T16:34:08.873 に答える