2011-12-27 124 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