我一直在我的應用程序中使用自定義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:
做如果有人知道更多的東西,預計這些方法去做,你的見解非常讚賞。