Frage

Nun, das ist NSURLProtocol ziemlich allgemein richtig? Es ist für alle Arten von Protokollen definiert, nicht wahr?

Warum gibt es nichts, wie NSHTTPURLProtocol? Stattdessen gibt es eine informelle Kategorie auf NSURLRequest mit speziellem HTTP-Material. Warum tat sie, dass diese Art und Weise? Warum kein benutzerdefinierten HTTP-Protokoll statt?

Was ist die Idee, all dieses Zeug in NSURLRequest hinter setzen, anstatt in ein eigenes Protokoll für HTTP?

Sicher HTTP wird oft verwendet, aber irgendwie: Es ist verwirrend für das Verständnis der gesamten URL Ladesystem von Cocoa/CocoaTouch. Nun gibt es zwei Dokumente. Man sagt, „eine benutzerdefinierte NSURLProtocol Unterklasse für Ihr eigenes Protokoll erstellen“. Der andere sagt: „informelle Kategorien erstellen wie die, die für das HTTP-Material auf NSURLRequest“.

Hope jemand mit einem tiefen Verständnis kann man erkennen, klären;)

War es hilfreich?

Lösung

Das gibt mehrere gute Gründe:

  1. Sie nie Zugriff auf die NSURLProtocol-Unterklasse, die die Verbindung mit Strom versorgt; nur die NSURLConnection selbst widersprechen. Deshalb, auch wenn solche Verfahren zu einer hypothetischen NSHTTPURLProtocol Klasse hinzugefügt wurden, wie würden Sie jemals auf sie zugreifen?

  2. NSURLConnection verwendet das Request-Objekt, um zu bestimmen, welches Protokoll es behandelt. Daher werden alle Eigenschaften des Antrags müssen bekannt sein, bevor das Protokoll Objekt erstellt wird. Zum Beispiel könnten Sie ein eigenes Protokoll, dass überschreibt die Standard-HTTP-Implementierung erstellen, sondern nur für bestimmte Hosts.

  3. Die Bereitstellung aller Einstellungen up-front ist viel sauberer. Was passiert, wenn Sie das Protokollobjekt und Verformungseigenschaften auf sie Mitte Last zugreifen können? Wie soll es mit ihnen umgehen - ignorieren, Ausnahme oder versuchen anpassen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top