以下视图导致iPhone崩溃
如果我注释掉
using (webView = new UIWebView(webRect)) {
}
部分 - 它没有。
using System;
using MonoTouch.UIKit;
using MonoTouch.Foundation;
using System.Drawing;
namespace WmcStarClient
{
public class EventDetailView : UIViewController
{
public WmcStarEventService.Event _event;
public UIWebView webView;
public EventDetailView ()
{
}
public EventDetailView (WmcStarEventService.Event eventParam)
{
_event = eventParam;
}
public override void ViewDidLoad ()
{
base.ViewDidLoad ();
var webRect = new RectangleF(0f, 0f, 320f, 460f);
using (webView = new UIWebView(webRect)) {
}
}
}
}
以前有人见过这个吗?
瓦特://
答案 0 :(得分:2)
这是在1.5系列的第一个测试版中修复的错误:
答案 1 :(得分:1)
当你使用“using”结构时,你在webview上调用Dispose(),它被映射到Cocoa运行时中的“release”消息。
所以你发布了webview对象,但你仍然坚持你班级的参考。第一次尝试访问它时,您正在访问已发布的实例。
您是不是将webview作为子视图添加到视图中?如果是这样,在什么时候?
正确的代码,恕我直言,将是:
public class EventDetailView : UIViewController
{
public WmcStarEventService.Event _event;
public UIWebView webView;
public EventDetailView ()
{
}
public EventDetailView (WmcStarEventService.Event eventParam)
{
_event = eventParam;
}
public override void ViewDidLoad ()
{
base.ViewDidLoad ();
var webRect = new RectangleF(0f, 0f, 320f, 460f);
webView = new UIWebView(webRect);
View.AddSubView(webView);
}
protected override void Dispose(bool disposing)
{
if (disposing)
webView.Dispose();
base.Dispose(disposing);
}
}
请注意,不需要重写Dispose(),但它应该比简单地依赖垃圾收集器更早地释放内存。
答案 2 :(得分:0)
这可能是一个不同/新的错误 - 我在monotouch论坛上得到了更好的回应:
http://forums.monotouch.net/yaf_postsm1500.aspx#post1500
瓦特://
答案 3 :(得分:0)
将它包装在using语句中似乎很奇怪。这就像你在装载时处理某些东西一样。你确定没错吗?