我一直在我的应用程序中使用自定义NSURLProtocol来检测资源并从缓存目录加载(如果可用)或重定向回我的应用服务器。但是,我发现关于抽象方法的文档缺乏,我不确定如何处理我们需要实现的一些抽象方法。NSURLProtocol的抽象方法
我们必须实现:
+ (BOOL)canInitWithRequest:(NSURLRequest *)request
+ (NSURLRequest *)canonicalRequestForRequest:(NSURLRequest *)request
- (void)startLoading
- (void)stopLoading
canInitWithRequest
是容易的,你这是怎么告诉NSURLProtocol,你会响应该请求。我不知道该怎么做canonicalRequestForRequest:
。
在startLoading:
,我一直在任创建从本地文件我的回应或synchroniously获取远程文件,然后调用client
方法:
[self.client URLProtocol:self didReceiveResponse:response cacheStoragePolicy:NSURLCacheStorageAllowed];
[self.client URLProtocol:self didLoadData:responseData];
[self.client URLProtocolDidFinishLoading:self];
目前还不清楚我是否需要调用客户端协议方法:
- (void)URLProtocol:(NSURLProtocol *)protocol wasRedirectedToRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse
当我决定从远程服务器获取资源(尚未缓存时)。
最后,我还没有想出什么用stopLoading:
做如果有人知道更多的东西,预计这些方法去做,你的见解非常赞赏。