Question

Eh bien, NSURLProtocol est juste assez générique? Il est pour définir tous les types de protocoles, non?

Alors, pourquoi est-il rien comme NSHTTPURLProtocol? Au lieu de cela, il y a une catégorie informelle sur NSURLRequest avec des trucs HTTP spécifique. Pourquoi ont-ils fait de cette façon? Pourquoi aucun protocole HTTP personnalisé à la place?

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

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

quelqu'un Hope avec une compréhension profonde peut éclaircir cela;)

Était-ce utile?

La solution

sont plusieurs bonnes raisons:

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

  2. NSURLConnection utilise l'objet de requête afin de déterminer quel protocole va gérer. Par conséquent, toutes les propriétés de la demande doivent être connus avant que l'objet du protocole est créé. Par exemple, vous pouvez créer un protocole personnalisé qui remplace l'implémentation HTTP par défaut, mais seulement pour certains hôtes.

  3. Fournir tous les réglages initiaux est beaucoup plus propre. Que faire si vous pouvez accéder à l'objet de protocole et définir des propriétés sur ce milieu de charge? Comment faut-il les gérer - ignorer, exception ou essayez de régler

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top