0

嗯,NSURLProtocol很一般吧?它是用来定义各种协议的,不是吗?

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

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

当然 HTTP 经常被使用,但无论如何:理解Cocoa/CocoaTouch. 现在有两个文件。NSURLProtocol有人说,“为您自己的协议创建一个自定义子类”。另一个说:“创建非正式类别,例如用于 HTTP 内容的类别NSURLRequest”。

希望有深刻理解的人可以澄清这一点;)

4

1 回答 1

1

有几个很好的理由:

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

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

  3. 预先提供所有设置要整洁得多。如果您可以访问协议对象并在负载中对其设置属性怎么办?它应该如何处理它们——忽略、异常或尝试调整?

于 2010-01-22T16:24:16.067 回答