2

私はOSX10.6でモノラルで作業していますが、この質問はCocoaの専門家にもお願いします。

NSTableViewにアタッチするコンテキストメニューがあります。コンテキストメニューを選択すると、ハンドラー(テストでは空)はokと呼ばれますが、アプリケーションがクラッシュします。

これは私がウィンドウコントローラーに持っているコードです:

...
myNSTableView.Menu = new NSMenu();
NSMenuItem mi = new NSMenuItem("menu item 1", myHandler);
myNSTableView.Menu.AddItem(mi);
...

public void myHandler(object Sender, EventArgs e)
{
}

また、200ミリ秒ごとに繰り返すNSTimerセットアップもあります

myNSTimer = NSTimer.CreateRepeatingScheduledTimer(new TimeSpan(2000000),delegate { 
        move an NSSlider            
        });

NSRunLoop.Main.AddTimer(myNSTimer, NSRunLoopMode.Common);
NSRunLoop.Main.AddTimer(myNSTimer, NSRunLoopMode.EventTracking);

コンテキストメニューにアクセスしようとすると、毎回アプリケーションがクラッシュします。

タイマーを開始しない場合は、コンテキストメニューで問題ありません。

私はこれを機能させるために文字通りすべてを試し、アイデアが不足しているので、問題がどこにあるかを示すだけでも、誰かが助けてくれる必要があります。そのモノがちょうど今という事実を忘れて、誰もがカカオの観点から問題を見ることができますか?

4

1 に答える 1

2

タイマーによって問題が悪化したことが判明しましたが、実際には、NSMenuItems のインスタンス変数を宣言していなかったため、ガベージ コレクションが行われ、objc レベルでクラッシュが発生していたことが原因でした。

于 2012-12-05T02:03:18.117 に答える