Я работаю над добавлением слоя модели в приложение iPhone, чтобы я мог сериализовать / расставлять приоритеты HTTP-запросов и выборочно кэшировать ответы. Благодаря UIWebViewDelegate, следующий метод делает это довольно просто (теоретически):
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;
По сути, мой код проверяет навигационный тип, отправляет запрос модели и возвращает НЕТ. В свою очередь, уровень модели обрабатывает запрос и, когда завершено, вставляет данные обратно в UIWebView, используя:
- (void)loadData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)encodingName baseURL:(NSURL *)baseURL
К сожалению, при отправке данных обратно в UIWebView я часто вижу, что shouldStartLoadWithRequest снова запускается (на этот раз с навигационным типом 5, но с использованием того же URL-адреса, что и исходный запрос). Я не могу полагаться на то, что модель будет обслуживать это из кэша (так как URL-адрес идентичен предыдущему), поэтому мне нужно, чтобы UIWebView обрабатывал его сам, возвращая YES.
Я бы хотел избежать этого, чтобы модель (и уровень кэширования) видели и обрабатывали все запросы. Кто-нибудь есть какие-либо идеи, почему я вижу NavigationType 5 во вторичном mustStartLoadWithRequest?