2011-12-27 161 views
4

我在iOS 5.0 iPhone和iPad上使用Mono/Monotouch/MonoDevelop的最新穩定版本。我有一個UIWebView,它在模擬器中不會在EXC_BAD_ACCESS上崩潰的實際設備上隨機崩潰。基於我用UIWebView讀取的所有內容,這些內容很可能在UIWebView在加載完成之前處理完成。單觸+ UIWebView =隨機崩潰

這裏是代碼我用我的viewDidLoad():

var urlAddress = BASE_URL + _page; 
var nsURL = new NSUrl(urlAddress); 
var nsURLRequest = new NSUrlRequest(nsURL); 

_webView.Tag = 10; 
_webView.ScalesPageToFit = true; 
_webView.AutosizesSubviews = true; 

_webView.LoadStarted += HandleWebViewLoadStarted; 
_webView.LoadFinished += HandleWebViewLoadFinished; 
_webView.LoadRequest(nsURLRequest); 

this.Add(_webView); 

任何想法,爲什麼它會崩潰的實際設備上的隨機,但從來沒有在模擬器?

回答

4

我需要看到飛機墜毀的細節和更的源代碼是100%肯定,但我不相信是因爲你的NSUrlRequest實例被聲明爲一個局部變量引起的。 將此變量提升爲您類型的字段應解決此問題。

一旦該方法完成執行,該實例仍然可能需要。然而那時它不再被引用,垃圾收集器可以隨時收集它。如果收集,那麼你可能會像你提到的那樣崩潰。

它在模擬器上不會發生的事實很可能是由於它比設備更快而且代碼可以在GC收集該實例之前完成。即使它可能會崩潰,它只是一個時間的事情,使它在模擬器上大部分時間都工作,幾乎從不在設備上。

+0

謝謝,這是崩潰的原因,測試時肯定是頭疼,因爲我沒有物理設備進行測試。 – 2012-01-03 14:47:42

+0

很高興幫助。您能否將問題標記爲已回答(綠色標記在選票下),以便其他尋找相同內容的人可以看到答案。謝謝! – poupou 2012-01-04 15:30:06