2012-06-13 109 views
1

我有一個UIWebView這將加載文件。所有爲webview提到的支持文檔都在起作用。但有時候,當我快速來回移動時,UIWebView就會崩潰。我的意思是我點擊並一次又一次地打開文件。如果我這樣做,我的應用程序正在崩潰。UIWebView崩潰

任何想法爲什麼會這樣?它對視頻,音頻和txt文件很酷,但對於Office文檔和數字,頁面文檔卻很奇怪。

請幫我一把!

-(void) backBtnPressed 
{ 
    [_webView stopLoading]; 
    if ([_webView superview]) 
    {  
     [_webView removeFromSuperview]; 
     self.navigationItem.rightBarButtonItem = nil; 
    } 
} 

- (void) loadFile:(NSString*)filePath 
{ 
    NSURL* url = [NSURL fileURLWithPath:filePath]; 
    NSURLRequest* request = [NSURLRequest requestWithURL:url]; 
    [webView loadRequest:request]; 
    [webView setScalesPageToFit:YES]; 
} 
+1

您是否在發佈之前將webview的'delegate'屬性設置爲'nil'? – mvds

+0

@mvds - 爲什麼不是一個答案:) – deanWombourne

+0

我沒有設置委託像webview.deleget = self;當我移動到另一個視圖控制器時,我也釋放了webview。我從同一個viewcontroller打開文件。我做錯了什麼? – Perseus

回答

0

問題已解決。設置UIWebView以便在WebView中再次加載請求並重新加載請求。但現在只有在最壞的情況下,應用程序纔會崩潰。

0

在控制器

+0

我沒有設置委託像webview.deleget = self;當我移動到另一個視圖控制器時,我也釋放了webview。我從同一個viewcontroller打開文件。我做錯了什麼? – Perseus

+0

我正在使用removefromsuperview並停下來找回 – Perseus

0

的dealloc的設置web視圖的委託屬性設爲零如果從一個視圖控制器移動到另一個,請執行下列操作

[webView stopLoading]; 
webView.delegate = nil; 
+0

我不移動到其他視圖控制器。我在同一個視圖控制器中。 – Perseus

+0

我正在使用removefromsuperview並停止 – Perseus

0

實現這一點, chk你得到了什麼錯誤。

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error 
    { 
     NSLog("Error=%s",error); 
    } 
+0

雅我已經添加了。沒有打印錯誤日誌。但在調試區域,我可以看到這個EXCEPTION CPMessageException:(null) – Perseus

+0

複製你的'url'並將其粘貼到你的瀏覽器並檢查它是否工作? – Krunal

+0

不,我打開文件從本地文件路徑不是從網 – Perseus

0

試試這個:

-(void)viewWillDisappear:(BOOL)animated 
    { 
     if([webView isLoading]) 
     { 
      [webView stopLoading]; 
     } 
    } 
-1

儘量做到以下幾點。這個對我有用。

記住webView.delegate弱引用

[webView stopLoading]; 
[webView release]; 
webView = nil; 
webView.delegate = nil; 
0

剛上起飛的機會是其他人在犯同樣的錯誤,初學者在這裏添加此。如果您將其設置爲self以外的其他名稱,您的委託可能會被銷燬,如果沒有其他引用,它將導致各種崩潰。