2010-01-22 2 views
0

Eh bien, NSURLProtocol est assez générique non? C'est pour définir toutes sortes de protocoles, n'est-ce pas?Pourquoi n'y a-t-il pas de classe NSHTTPURLProtocol?

Alors pourquoi n'y a-t-il rien de tel que NSHTTPURLProtocol? Au lieu de cela, il existe une catégorie informelle sur NSURLRequest avec des éléments HTTP spécifiques. Pourquoi ont-ils fait ça de cette façon? Pourquoi pas de protocole HTTP personnalisé à la place?

Quelle est l'idée derrière tout mettre dans NSURLRequest plutôt que dans un protocole personnalisé pour HTTP?

Sûr HTTP est souvent utilisé, mais de toute façon: Il est déroutant de comprendre l'ensemble du système de chargement URL de Cocoa/CocoaTouch. Maintenant, il y a deux documents. On dit, "créer une sous-classe personnalisée NSURLProtocol pour votre propre protocole". L'autre dit: "créer des catégories informelles comme celles pour les trucs HTTP sur NSURLRequest".

quelqu'un avec l'espoir d'une compréhension profonde peut éclaircir cela;)

Répondre

1

Le sont plusieurs bonnes raisons:

  1. Vous n'avez accès au NSURLProtocol -subclass qui alimente la connexion; seul l'objet NSURLConnection lui-même. Par conséquent, même si ces méthodes ont été ajoutées à une classe NSHTTPURLProtocol hypothétique, comment y auriez-vous accès?

  2. NSURLConnection utilise l'objet de requête pour déterminer le protocole qui le gérera. Par conséquent, toutes les propriétés de la demande doivent être connues avant la création de l'objet de protocole. Par exemple, vous pouvez créer un protocole personnalisé qui remplace l'implémentation HTTP par défaut, mais uniquement pour certains hôtes.

  3. Fournir tous les paramètres à l'avant est beaucoup plus net. Que se passerait-il si vous pouviez accéder à l'objet de protocole et définir les propriétés à mi-charge? Comment devrait-il les gérer - ignorer, exception, ou essayer d'ajuster?

Questions connexes