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;)

¿Fue útil?

Solución

Existen varias razones buenas:

  1. Usted nunca tiene acceso a la NSURLProtocol-subclase que está impulsando la conexión; sólo el NSURLConnection objeto mismo. Por lo tanto, incluso si se han añadido estos métodos a una clase NSHTTPURLProtocol hipotética, ¿cómo se podría acceder a ellos?

  2. 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.

  3. 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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top