He estado usando un NSURLProtocol personalizado en mi aplicación para detectar recursos y cargar desde un directorio de caché, si está disponible, o redirigir de regreso al servidor de mi aplicación. Sin embargo, encuentro que falta documentación sobre los métodos abstractos y no estoy seguro de qué hacer con algunos de los métodos abstractos que debemos implementar.NSURLProtocol's abstract methods
debemos poner en práctica:
+ (BOOL)canInitWithRequest:(NSURLRequest *)request
+ (NSURLRequest *)canonicalRequestForRequest:(NSURLRequest *)request
- (void)startLoading
- (void)stopLoading
canInitWithRequest
es fácil, así es como se dice al NSURLProtocol que va a responder a esta solicitud.
No tengo ni idea de qué hacer con canonicalRequestForRequest:
.
En startLoading:
, he estado ya sea creando mi respuesta desde un archivo local o ir a buscar synchroniously un archivo remoto, a continuación, llamar a los client
métodos:
[self.client URLProtocol:self didReceiveResponse:response cacheStoragePolicy:NSURLCacheStorageAllowed];
[self.client URLProtocol:self didLoadData:responseData];
[self.client URLProtocolDidFinishLoading:self];
Es claro para mí si tengo que llamar al cliente método de protocolo:
- (void)URLProtocol:(NSURLProtocol *)protocol wasRedirectedToRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse
cuando decido a buscar el recurso del servidor remoto (cuando todavía no se ha almacenado en caché).
Por último, aún no he descubierto qué hacer con stopLoading:
Si alguien sabe más de lo que se espera que estos métodos para hacer, sus ideas son muy apreciados.