Używam niestandardowego NSURL Protococol w mojej aplikacji do wykrywania zasobów i ładowania z katalogu pamięci podręcznej, jeśli jest dostępny, lub przekierowania z powrotem do serwera mojej aplikacji. Jednak brakuje mi dokumentacji dotyczącej metod abstrakcyjnych i nie jestem pewien, co zrobić z niektórymi metodami abstrakcyjnymi, które musimy wdrożyć.Metody abstrakcyjne NSURL Protococol
Musimy wdrożyć:
+ (BOOL)canInitWithRequest:(NSURLRequest *)request
+ (NSURLRequest *)canonicalRequestForRequest:(NSURLRequest *)request
- (void)startLoading
- (void)stopLoading
canInitWithRequest
jest łatwe, to jak powiedzieć NSURLProtocol że będzie reagować na to żądanie.
Nie mam pojęcia, co zrobić z canonicalRequestForRequest:
.
W startLoading:
, byłem albo tworząc moją odpowiedź z pliku lokalnego lub synchroniously pobierania zdalnego pliku, a następnie wywołanie client
metody:
[self.client URLProtocol:self didReceiveResponse:response cacheStoragePolicy:NSURLCacheStorageAllowed];
[self.client URLProtocol:self didLoadData:responseData];
[self.client URLProtocolDidFinishLoading:self];
Jest dla mnie jasne, czy muszę zadzwonić do klienta metoda protokołu:
- (void)URLProtocol:(NSURLProtocol *)protocol wasRedirectedToRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse
Kiedy zdecyduję się pobrać zasób ze zdalnego serwera (jeśli nie został jeszcze buforowany).
Wreszcie, jeszcze nie zorientowali się, co zrobić z stopLoading:
Jeśli ktoś wie więcej o tym, co oczekuje te metody to zrobić, twoje spostrzeżenia są bardzo cenione.