嗯,NSURLProtocol
非常通用吗?它用于定义各种协议,不是吗?
那为什么没有像NSHTTPURLProtocol
这样的东西呢?相反,NSURLRequest上有一个非正式的类别,具有特定的HTTP内容。他们为什么这样做?为什么没有自定义HTTP协议?
将所有这些内容放入NSURLRequest
而不是自定义HTTP协议背后的想法是什么?
当然经常使用HTTP,但无论如何:理解Cocoa/CocoaTouch
的整个URL加载系统会让人感到困惑。现在有两个文件。有人说,“为自己的协议创建一个自定义的NSURLProtocol
子类”。另一个说:“创建非正式类别,如NSURLRequest
上的HTTP内容。”
希望有深刻理解的人可以清除它;)
答案 0 :(得分:1)
有几个很好的理由:
您永远无法访问为连接供电的NSURLProtocol
- 子类;只有NSURLConnection
对象本身。因此,即使将这些方法添加到假设的NSHTTPURLProtocol
课程中,您将如何访问它们?
NSURLConnection
使用请求对象来确定将处理它的协议。因此,在创建协议对象之前,需要知道请求的所有属性。例如,您可以创建一个自定义协议来覆盖默认的HTTP实现,但仅限于某些主机。
预先提供所有设置非常简洁。如果您可以访问协议对象并在加载中设置属性,该怎么办?它应该如何处理它们 - 忽略,例外或尝试调整?