2010-01-22 48 views
0

那么,NSURLProtocol是非常通用的权利?它用于定义各种协议,不是吗?为什么没有NSHTTPURLProtocol类?

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

将所有这些东西放到NSURLRequest而不是HTTP自定义协议背后是什么想法?

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

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

回答

1

的几个很好的理由:

  1. 你从来没有访问NSURLProtocol -subclass所供电的连接;只有NSURLConnection对象本身。因此,即使将这些方法添加到假设的NSHTTPURLProtocol课程中,您将如何访问它们?

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

  3. 预先提供所有设置是一个很好的选择。如果您可以访问协议对象并在中途加载属性,该怎么办?它应该如何处理它们 - 忽略,例外还是尝试调整?

相关问题