我在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);
一旦我尝试访问上下文菜单,应用程序每次都会崩溃。
如果我没有启动计时器,上下文菜单就可以了。
我已经尝试了所有的东西来使这个工作并且已经用完了想法,所以我真的需要有人帮忙,即使只是一个指向问题所在的指针。忘记刚才它的单声道的事实,任何人都可以从可可的角度看问题吗?
答案 0 :(得分:2)
事实证明,问题因计时器而恶化,但原因实际上是我没有为NSMenuItem声明实例变量,所以他们收集垃圾并导致objc级别崩溃。