0

奇妙な問題があります。設定は次のとおりです。

  • NSOperationサブクラスオブジェクトを追加するNSOperationQueueがあります。これらは、NSURLConnectionsendSynchronousRequestメソッドを使用してネットワーキングを行います。私が理解しているように、これらはそれぞれ独自のスレッドを取得するNSOperationsであるため、完全に非同期です。
  • バックグラウンドのネットワーク操作なしでアプリを起動した場合、UIWebViewへのURLのロードは問題なく機能します。
  • アプリを起動してバックグラウンドネットワーク操作を実行すると、UIWebViewにURLをロードすると次のエラーが発生します。

    エラードメイン=WebKitErrorDomainコード=102UserInfo=0x1996d60"フレームの読み込みが中断されました"

その後UIWebViewをロードしようとすると、同じエラーで失敗します。

UIWebViewとNSURLConnectionの間に、注意が必要な奇妙な相互作用がありますか?次のステップは、同期呼び出しを完全に非同期のNSOperationに置き換えることですが、これは非常に奇妙なバグなので、専門家に聞いてみようと思いました。

NSURLConnectionsendSynchronousRequestメソッドまでエラーを切り分けました。これをNSOperationから呼び出すと、UIWebViewがひどく壊れます。

102エラーは、WebKitの「ポリシー変更」エラーと関係があります。これは、どこにも文書化されていないか、文書化されていません。

誰かが何か考えがありますか?どんな助けでも大歓迎です!

編集:これはある種のCookieの問題のようです。WebサーバーがバックグラウンドHTTPリクエストを介してCookieを設定している場合、UIWebViewの読み込みに失敗する理由は何ですか?

4

2 に答える 2

5

OK、私はこれを理解しました。

どうやら、UIWebViewは、グローバルCookieストアを使用するURLConnection HTTPRequests(またはASIHTTPRequest)を好まないようです。そのため、私のアプリは単純なHTMLページをスローして、UIWebViewでCookieを設定できるようにします。その「下流」のすべての人は、NSOperationを介したAPIリクエストとUIWebViewsの両方で、明らかに幸せなキャンピングカーです。

やったー!

于 2010-03-03T18:30:37.017 に答える
0

ここで何を達成しようとしているのかわかりません。UIWebViewはNSRequestを非同期でロードします。performSelectorOnMainThread:チェックすることの1つは、 NSOperation内のメソッドの1つを使用して、UIWebViewを使用してコードで実行している対話がメインスレッド上にあることを確認することです 。

于 2010-03-02T15:57:43.840 に答える