Warum gibt es keine NSHTTPURLProtocol Klasse?
-
22-09-2019 - |
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;)
Lösung
Das gibt mehrere gute Gründe:
-
Sie nie Zugriff auf die
NSURLProtocol
-Unterklasse, die die Verbindung mit Strom versorgt; nur dieNSURLConnection
selbst widersprechen. Deshalb, auch wenn solche Verfahren zu einer hypothetischenNSHTTPURLProtocol
Klasse hinzugefügt wurden, wie würden Sie jemals auf sie zugreifen? -
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. -
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