Cocoa上下文菜单导致主线程上的计时器崩溃

时间:2012-11-30 10:56:40

标签: cocoa nstimer monomac nsmenu

我在OSX10.6上使用mono工作 - 但这个问题也适用于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)
{
}

我还有一个NSTimer设置,每200ms重复

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

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

一旦我尝试访问上下文菜单,应用程序每次都会崩溃。

如果我没有启动计时器,上下文菜单就可以了。

我已经尝试了所有的东西来使这个工作并且已经用完了想法,所以我真的需要有人帮忙,即使只是一个指向问题所在的指针。忘记刚才它的单声道的事实,任何人都可以从可可的角度看问题吗?

1 个答案:

答案 0 :(得分:2)

事实证明,问题因计时器而恶化,但原因实际上是我没有为NSMenuItem声明实例变量,所以他们收集垃圾并导致objc级别崩溃。

相关问题