2015-04-22 65 views
0

我正在製作的iOS應用程序可能會有多個webViews同時加載相同的網址。導致此錯誤:加載多個webViews時出現-999錯誤-999

Error Domain=NSURLErrorDomain Code=-999 "The operation couldn’t be completed. 
(NSURLErrorDomain error -999.)" UserInfo=0x176b7bc0 {NSErrorFailingURLKey=https://example.com, 
NSErrorFailingURLStringKey=https://example.com} 

我讀過這種情況時,舊請求已完成之前開始一個新的請求。我如何防止這種情況發生?謝謝

回答

1

我花了幾個星期擔心這個錯誤。我在訪問網頁時隨機獲取它。在我的情況下,我把它放回頁面被請求的速度太快,因爲Web訪問是由代碼中的狀態機驅動的,而不是由用戶驅動的。

經過大量搜索,最終我發現了一些無法解釋錯誤發生原因的討論,但感覺它是UIWebView的特性,而不是您應該擔心的。指導是忽視它。我會看看我是否可以找到該文章,並稍後更新此答案,如果我能找到它。

我更新了我的代碼,如下所示,迄今爲止沒有看到任何不良影響,因爲添加它。這表明它幾乎是一個通知,任何導致它的東西似乎都在UIWebView中得到糾正。希望你的情況也一樣。

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error 
{ 
    VSSLog(@"Entry: error = %@",error); 

    // Added this based on net advice. Its a bogus error. 
    if ([error code] == NSURLErrorCancelled) { 
     return; 
    } 

    ... Normal error handling code for proper errors. 
} 

我不是一個不在視線之外的人,但是我相信這是其中的一種情況。

最後,如果您僅使用iOS8,則可以嘗試移動以使用新的WKWebView而不是UIWebView。

1

使用委託方法。確定哪個視圖觸發了方法,然後觸發下一個方法,如果您想要順序運行它們。

- (void) webViewDidFinishLoad:(UIWebView *)webview{ 
    if (webview == self.wView1) 
    { 
      // stuff 
    } else if (webview == self.wView2) { 
      // stuff 2 
    } 
} 

UITableViewDelegate Protocol Reference

+0

所以這將意味着我會使用同一個代表的觀點?我的webView所在的containerview現在是代理,我創建了該視圖的多個實例。 –

+0

是的,您可以將委託分配給相同的控制器並處理多個視圖。 –

+0

但爲什麼我會在webViewDidFinishLoad中執行它?如果webView永遠不會完成加載權限,那將不會被調用?它只是調用:didFailLoadWithError –

相關問題