Почему нет класса NSHTTPURLProtocol? - PullRequest
0 голосов
/ 22 января 2010

Ну, NSURLProtocol довольно универсально, верно? Это для определения всех видов протоколов, не так ли?

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

Что за идея поместить все эти вещи в NSURLRequest, а не в собственный протокол для HTTP?

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

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

1 Ответ

1 голос
/ 22 января 2010

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

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

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

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

...