Perché non c'è nessuna classe NSHTTPURLProtocol?
-
22-09-2019 - |
Domanda
Bene, NSURLProtocol
è giusto piuttosto generica? E 'per la definizione di tutti i tipi di protocolli, non è vero?
Quindi, perché non c'è niente come NSHTTPURLProtocol
? Invece, c'è una categoria informale NSURLRequest con roba HTTP specifica. Perché hanno fatto che in questo modo? Perché nessun protocollo HTTP personalizzato, invece?
Qual è l'idea alla base di mettere tutta questa roba in NSURLRequest
piuttosto che in un protocollo personalizzato per HTTP?
HTTP Certo è spesso usato, ma in ogni modo: E 'di confusione per comprendere l'intero Sistema URL Caricamento di Cocoa/CocoaTouch
. Ora ci sono due documenti. Uno dice, "creare una sottoclasse NSURLProtocol
personalizzato per il proprio protocollo". L'altro dice: "creare categorie informali come quelle per la roba HTTP su NSURLRequest
".
La speranza qualcuno con una profonda comprensione può chiarire che fino;)
Soluzione
L'sono diverse buone ragioni:
-
Non si può mai avere accesso alla
NSURLProtocol
-sottoclasse che sta alimentando la connessione; solo laNSURLConnection
stessa oggetto. Pertanto, anche se sono state aggiunte tali metodi a una classeNSHTTPURLProtocol
ipotetica, come è possibile mai accedervi? -
NSURLConnection
utilizza l'oggetto di richiesta per determinare quale protocollo lo gestirà. Pertanto, tutte le proprietà della richiesta devono essere conosciute prima di creare l'oggetto protocollo. Ad esempio, è possibile creare un protocollo personalizzato che sostituisce l'implementazione predefinita HTTP, ma solo per alcuni ospiti. -
Fornire tutte le impostazioni di up-front è un più ordinato molto. E se fosse possibile accedere all'oggetto di protocollo e impostare le proprietà su di esso a metà carico? Come dovrebbe gestirli -? Ignorano, eccezioni, o tentare di regolare