Pergunta

Nós iremos, NSURLProtocol É bem genérico, certo? É para definir todos os tipos de protocolos, não é?

Então, por que não há nada como NSHTTPURLProtocol? Em vez disso, existe uma categoria informal no NSURLRequest com coisas HTTP específicas. Por que eles fizeram dessa maneira? Por que nenhum protocolo HTTP personalizado?

Qual é a ideia por trás de colocar tudo isso em NSURLRequest em vez de em um protocolo personalizado para HTTP?

Claro que o HTTP é frequentemente usado, mas de qualquer maneira: é confuso para entender todo o sistema de carregamento de URL de Cocoa/CocoaTouch. Agora existem dois documentos. Um diz: "Crie um costume NSURLProtocol Subclasse para seu próprio protocolo ". O outro diz:" Crie categorias informais como as para as coisas HTTP em NSURLRequest".

Espero que alguém com um entendimento profundo possa esclarecer isso;)

Foi útil?

Solução

São várias boas razões:

  1. Você nunca tem acesso ao NSURLProtocol-Subclasse que está alimentando a conexão; apenas o NSURLConnection objeto em si. Portanto, mesmo que esses métodos tenham sido adicionados a um hipotético NSHTTPURLProtocol Aula, como você os acessaria?

  2. NSURLConnection Usa o objeto de solicitação para determinar qual protocolo lidará com ele. Portanto, todas as propriedades da solicitação precisam ser conhecidas antes que o objeto do protocolo seja criado. Por exemplo, você pode criar um protocolo personalizado que substitua a implementação HTTP padrão, mas apenas para determinados hosts.

  3. O fornecimento de todas as configurações inicial é muito mais intenso. E se você pudesse acessar o objeto Protocolo e definir propriedades nele no meio da carga? Como isso deve lidar com eles - ignorar, exceção ou tentar ajustar?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top