Por que não há classe NSHTTPURLPROTOCOL?
-
22-09-2019 - |
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;)
Solução
São várias boas razões:
Você nunca tem acesso ao
NSURLProtocol
-Subclasse que está alimentando a conexão; apenas oNSURLConnection
objeto em si. Portanto, mesmo que esses métodos tenham sido adicionados a um hipotéticoNSHTTPURLProtocol
Aula, como você os acessaria?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.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?