2

我在 OSX10.6 上以单声道工作 - 但这个问题也适合 Cocoa 专家。

我有一个附加到 NSTableView 的上下文菜单。当我选择上下文菜单时,处理程序(测试时为空)被调用,但随后应用程序崩溃。

这是我在窗口控制器中的代码:

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

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

我还有一个 NSTimer 设置,每 200 毫秒重复一次

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 回答