iOS:UIWebViewDelegate didFailLoadWithError在连接断开时未调用-1005错误

iOS:UIWebViewDelegate didFailLoadWithError在连接断开时未调用-1005错误,ios,objective-c,networking,uiwebview,delegates,Ios,Objective C,Networking,Uiwebview,Delegates,我在UIWebView中加载大型网页时遇到问题,因为某种原因,在加载java脚本文件时连接会断开。加载在某个点暂停,并且从未调用过didFailLoadWithError或webViewDidFinishLoad。委托的设置正确,因为当没有网络错误时,页面加载良好,并调用webViewDidFinishLoad方法 在试图找出页面加载暂停的原因时,我实现并注册了一个定制的NSURLProtocol,在该协议中,我发现大部分时间都会调用连接委托,但此后再也不会调用web视图委托 我更改了自定义协议

我在UIWebView中加载大型网页时遇到问题,因为某种原因,在加载java脚本文件时连接会断开。加载在某个点暂停,并且从未调用过didFailLoadWithError或webViewDidFinishLoad。委托的设置正确,因为当没有网络错误时,页面加载良好,并调用webViewDidFinishLoad方法

在试图找出页面加载暂停的原因时,我实现并注册了一个定制的NSURLProtocol,在该协议中,我发现大部分时间都会调用连接委托,但此后再也不会调用web视图委托

我更改了自定义协议以在主线程中运行连接,这导致每次网络连接断开时都会调用didFailWithError方法

- (void)startLoading {
  NSMutableURLRequest *newRequest = [self.request mutableCopy];
  [NSURLProtocol setProperty:@YES forKey:ProtocolKey inRequest:newRequest];


  self.connection  = [[NSURLConnection alloc]
                                initWithRequest:newRequest
                                delegate:self startImmediately:NO];

  [self.connection scheduleInRunLoop:[NSRunLoop mainRunLoop]
                      forMode:NSDefaultRunLoopMode];
  [self.connection start];   
}
web视图委托webViewDidFinishLoad方法仍然没有被调用,因此我向didFailWithError方法添加了一个通知,允许我处理web视图控制器中的错误

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
  NSDictionary *dict = @{ @"errorDescription":error.localizedDescription };


  [[NSNotificationCenter defaultCenter] postNotificationName:ErrorKey object:nil ];

  [self.client URLProtocol:self didFailWithError:error];
}
我不明白为什么后台线程上的web视图运行的请求似乎在调用委托方法和处理错误之前就被破坏了

我在WKWebView中遇到了类似的问题,我假设使用相同的资源javascript,但我无法捕获自定义协议处理程序中的错误,因此我不知道那里发生了什么


以前有人碰到过这个吗?或者有更好的方法解决此问题?

此链接可能会帮助您找到一些有用的方法。