Por qué no hay clase NSHTTPURLProtocol?
-
22-09-2019 - |
Pregunta
Bueno, está bien NSURLProtocol
bastante genérico? Es para definir todo tipo de protocolos, ¿verdad?
Así que ¿por qué hay nada como NSHTTPURLProtocol
? En su lugar, existe una categoría informal sobre NSURLRequest con la materia específica de HTTP. ¿Por qué lo hacen de esta manera? ¿Por qué no existe un protocolo HTTP personalizado en su lugar?
¿Cuál es la idea detrás de poner todo esto en NSURLRequest
en lugar de en un protocolo personalizado para HTTP?
Claro HTTP se utiliza a menudo, pero de todos modos: Es confuso para la comprensión de todo el sistema de carga de URL Cocoa/CocoaTouch
. Ahora bien, hay dos documentos. Uno dice, "crear una subclase NSURLProtocol
personalizado para su propio protocolo". El otro dice: "crear categorías informales como los de la materia HTTP en NSURLRequest
".
La esperanza alguien con un conocimiento profundo puede aclarar eso;)
Solución
Existen varias razones buenas:
-
Usted nunca tiene acceso a la
NSURLProtocol
-subclase que está impulsando la conexión; sólo elNSURLConnection
objeto mismo. Por lo tanto, incluso si se han añadido estos métodos a una claseNSHTTPURLProtocol
hipotética, ¿cómo se podría acceder a ellos? -
NSURLConnection
utiliza el objeto de solicitud para determinar qué protocolo se manejarlo. Por lo tanto, todas las propiedades de la solicitud necesidad de ser conocidos antes de crear el objeto de protocolo. Por ejemplo, se podría crear un protocolo personalizado que anula la implementación de HTTP por defecto, pero sólo para ciertos huéspedes. -
Proporcionar todos los ajustes por adelantado es un montón más limpio. ¿Y si pudiera acceder al objeto de protocolo y propiedades de deformación permanente en él a mediados de carga? ¿Cómo debería manejarlos - ignorar, excepción, o tratar de ajustar