ios - Monotouch + UIWebView = 随机崩溃

标签 ios uiwebview crash xamarin.ios nsurlrequest

我在 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% 确定,但我相信这是因为您的 NSUrlRequest 实例被声明为局部变量。 将此变量提升到您的类型的字段中应该可以解决此问题。

一旦方法完成它的执行,实例可能仍然是必需的。但是那时它不再被引用,垃圾收集器可以随时收集它。如果已收集,那么您可能会像您提到的那样发生崩溃。

它不会在模拟器上发生的事实可能是因为它(比设备)更快并且代码可以在 GC 收集该实例之前完成。 IOW 它可能会崩溃,这只是一个时间问题,它使它大部分时间都在模拟器上工作,而几乎从不在设备上工作。

关于ios - Monotouch + UIWebView = 随机崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8646966/

相关文章:

javascript - 如何在 uiwebview 中捕获 javascript 按钮操作

objective-c - 如何从 block 内对主线程执行 UIKit 调用

database - 无法以 'postgres' 用户身份登录 'postgres' 数据库

ios - 管理 wifi 可达性变化的正确方法?

ios - 如何检查转场是否在代码和 Storyboard中正确链接? "as!"里面的感叹号也不高亮?

ios 9 UIPopoverPresentationController 旋转时的恒定放置

ios - 不支持armv6设备的XCode 4.5有什么后果?

iOS - WebView 警告 : Assigning to 'id<UIWebViewDelegate>' from incompatible type

android - 当全局静态变量被杀死android时重启应用程序

iPhone KERN_INVALID_ADDRESS