Вопрос

Хорошо, NSURLProtocol это довольно общее, не так ли?Он предназначен для определения всех видов протоколов, не так ли?

Так почему же нет ничего подобного NSHTTPURLProtocol?Вместо этого в NSURLRequest есть неофициальная категория со специальными материалами HTTP.Почему они сделали это таким образом?Почему вместо этого нет специального протокола HTTP?

В чем идея поместить все это в NSURLRequest а не в собственный протокол для HTTP?

Конечно, HTTP часто используется, но в любом случае:Это сбивает с толку понимание всей системы загрузки URL-адресов. Cocoa/CocoaTouch.Сейчас есть два документа.Один говорит: «Создайте собственный NSURLProtocol подкласс для вашего собственного протокола».Другой говорит:"создавайте неформальные категории, подобные тем, которые предназначены для HTTP-материалов на NSURLRequest".

Надеюсь, кто-нибудь с глубоким пониманием сможет это прояснить;)

Это было полезно?

Решение

Есть несколько веских причин:

  1. У вас никогда не будет доступа к NSURLProtocol-подкласс, обеспечивающий соединение;только NSURLConnection сам объект.Поэтому, даже если бы такие методы были добавлены к гипотетическому NSHTTPURLProtocol класс, как бы ты мог получить к ним доступ?

  2. NSURLConnection использует объект запроса, чтобы определить, какой протокол будет его обрабатывать.Следовательно, все свойства запроса должны быть известны до создания объекта протокола.Например, вы можете создать собственный протокол, который переопределяет реализацию HTTP по умолчанию, но только для определенных хостов.

  3. Предоставление всех настроек заранее намного удобнее.Что, если бы вы могли получить доступ к объекту протокола и установить его свойства во время загрузки?Как ему следует с ними обращаться – игнорировать, исключать или попытаться скорректировать?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top