为什么没有NSHTTPURLProtocol类?

时间:2010-01-22 12:54:12

标签: iphone cocoa nsurlrequest nsurlprotocol

嗯,NSURLProtocol非常通用吗?它用于定义各种协议,不是吗?

那为什么没有像NSHTTPURLProtocol这样的东西呢?相反,NSURLRequest上有一个非正式的类别,具有特定的HTTP内容。他们为什么这样做?为什么没有自定义HTTP协议?

将所有这些内容放入NSURLRequest而不是自定义HTTP协议背后的想法是什么?

当然经常使用HTTP,但无论如何:理解Cocoa/CocoaTouch的整个URL加载系统会让人感到困惑。现在有两个文件。有人说,“为自己的协议创建一个自定义的NSURLProtocol子类”。另一个说:“创建非正式类别,如NSURLRequest上的HTTP内容。”

希望有深刻理解的人可以清除它;)

1 个答案:

答案 0 :(得分:1)

有几个很好的理由:

  1. 您永远无法访问为连接供电的NSURLProtocol - 子类;只有NSURLConnection对象本身。因此,即使将这些方法添加到假设的NSHTTPURLProtocol课程中,您将如何访问它们?

  2. NSURLConnection使用请求对象来确定将处理它的协议。因此,在创建协议对象之前,需要知道请求的所有属性。例如,您可以创建一个自定义协议来覆盖默认的HTTP实现,但仅限于某些主机。

  3. 预先提供所有设置非常简洁。如果您可以访问协议对象并在加载中设置属性,该怎么办?它应该如何处理它们 - 忽略,例外或尝试调整?