0

次のビューは 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)) {
            }
        }
    }
}

誰もこれを見たことがありますか?

w://

4

4 に答える 4

2

これは、1.5 シリーズの最初のベータ版で修正されたバグです。

http://monotouch.net/Releases/MonoTouch_1.4.99

于 2010-03-01T23:03:10.287 に答える
1

「using」コンストラクトを使用しているときは、Webview で Dispose() を呼び出しており、これは Cocoa ランタイムの「release」メッセージにマップされています。

したがって、webview オブジェクトを解放していますが、クラス内の参照を保持しています。初めてアクセスしようとすると、リリースされたインスタンスにアクセスしています。

サブビューとしてビューに Web ビューを追加していませんか? もしそうなら、どの時点で?

正しいコード、私見は次のようになります。

    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() のオーバーライドは必須ではありませんが、単にガベージ コレクターに頼るよりも早くメモリを解放するのに役立つはずです。

于 2010-03-06T13:08:02.680 に答える
0

これは別のバグまたは新しいバグである可能性があります。モノタッチ フォーラムでより良い反応を得ています。

http://forums.monotouch.net/yaf_postsm1500.aspx#post1500

w://

于 2010-03-02T06:15:31.270 に答える
0

それを using ステートメントでラップするのは非常に奇妙に思えます。ロード中に何かを破棄するようなものです。本当にそうですか?

于 2010-03-02T06:15:37.140 に答える