我在 iOS 5.0 iPhone 和 iPad 上使用 Mono/Monotouch/MonoDevelop 的最新稳定版本。我有一个 UIWebView,在模拟器中永远不会崩溃,但是在实际设备上它会随机崩溃在 EXC_BAD_ACCESS 上。根据我读到的有关 UIWebViews 的所有内容,最有可能发生在 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);
有什么想法为什么它会在实际设备上随机崩溃,但在模拟器中却不会崩溃?
我需要查看崩溃详细信息和更多源代码才能 100% 确定,但我确实这样做believe这是因为你的NSUrlRequest
实例被声明为局部变量。将此变量提升到您类型的字段中应该可以解决此问题。
方法完成执行后,仍可能需要该实例。然而那时它不再被引用,垃圾收集器可以随时收集它。如果收集起来,那么您可能会遇到像您提到的那样的崩溃。
它在模拟器上没有发生的事实可能是因为它更快(比设备)并且代码可以在 GC 收集该实例之前完成。 IOW,它可能会崩溃,这只是一个计时问题,使它大部分时间在模拟器上工作,而几乎不在设备上工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)