質問

良い、 NSURLProtocol かなり一般的ですよね?あらゆる種類のプロトコルを定義するためのものですね。

では、なぜそのようなものはないのでしょうか NSHTTPURLProtocol?代わりに、NSURLRequest には特定の HTTP に関する非公式のカテゴリがあります。なぜ彼らはこのようなことをしたのでしょうか?なぜ代わりにカスタム HTTP プロトコルを使用しないのでしょうか?

これだけのものを入れた背後にあるアイデアは何ですか NSURLRequest HTTP のカスタム プロトコルではなく?

確かに HTTP はよく使用されますが、とにかく:URL ローディング システム全体を理解するのは混乱を招きます。 Cocoa/CocoaTouch. 。これで文書が 2 つになりました。ある人は「カスタムを作成する」と言います。 NSURLProtocol 独自のプロトコルのサブクラス。もう一人はこう言います。「HTTP に関するものなどの非公式のカテゴリを作成します。 NSURLRequest".

深い理解のある誰かがそれを解決できることを願っています;)

役に立ちましたか?

解決

正当な理由はいくつかあります。

  1. にアクセスすることはありません NSURLProtocol- 接続に電力を供給しているサブクラス。だけ NSURLConnection オブジェクトそのもの。したがって、仮にそのような手法を仮説に追加したとしても、 NSHTTPURLProtocol クラスの皆さん、どうやってそれらにアクセスしますか?

  2. NSURLConnection リクエスト オブジェクトを使用して、どのプロトコルがそれを処理するかを決定します。したがって、プロトコル オブジェクトが作成される前に、リクエストのすべてのプロパティを知っておく必要があります。たとえば、特定のホストのみを対象として、デフォルトの HTTP 実装をオーバーライドするカスタム プロトコルを作成できます。

  3. すべての設定を事前に指定しておくと、はるかにすっきりします。ロード中にプロトコル オブジェクトにアクセスしてプロパティを設定できたらどうなるでしょうか?それらをどのように処理する必要がありますか?無視するか例外にするか、調整を試みるか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top