1

NSURLProtocolで実装されたカスタムを使用して、iOS 9で問題なく動作するアプリがありNSURLSessionます。クライアントによって実行されるすべてのリクエストNSURLSessionも同様に実行され、それぞれsessionConfigurationがリクエストを実行する前にプロトコルに登録されます。

iOS 9 にはない iOS 8 の問題があります。iOS8 では、カスタムNSURLProtocolはそのリクエストをノンストップで実行しています。基本的に、同じリクエストの無限ループです。canInitWithRequest:カスタムプロトコルでは、iOS 9 よりも iOS 8 の方がはるかに多く呼び出されます。これは、基本的にメソッドstartLoadingを駆動して、私のプロトコルが実行するはずのいくつかのヘッダー変更の後に呼び出されてリクエストを起動します。

NSURLProtocolsNSURLSessionが期待どおりに動作しないというiOS8 の既知の問題はありますか?

4

1 に答える 1

0

私はそのような問題を認識していません。

これは、プロトコルが次のいずれかのように聞こえます。

  • 何らかの理由で独自のヘッダー変更を検出できない
  • なんらかの理由で変更に失敗する
  • 変更されたヘッダーが既に含まれているリクエストを処理する必要があるかどうかをプロトコルに尋ねたときに NO を返さない

リクエストを処理するかどうかを検出する目的でヘッダー フィールドを使用していることを確認してください。機械に渡した特定の NSURLRequest オブジェクトが戻ってくるという保証はありません。を信頼できるかどうかさえ定かではありませんpropertyForKey:inRequest:が、それは私を過度に妄想的にするかもしれません.

重要なのは、NSURLSession を操作するときは NSURLRequest をサブクラス化しないことです。iOS 9 では、ほぼ動作します。iOS 7 までは、NSURLConnection の使用に追いやられてしまうまでは、遡るほど動作が壊れていきます。:-)

于 2016-05-08T02:19:28.610 に答える