gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 16:37:50 25 4
gpt4 key购买 nike

我正在 OSX10.6 上使用 mono,但这个问题也请向 Cocoa 专家提问。

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

这是我在窗口 Controller 中的代码:

...
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);

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

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

我已经尝试了一切方法来使其正常工作,但已经没有想法了,所以我真的需要有人帮助,即使只是指出问题可能出在哪里。忘记现在是单声道的事实,有人能从 cocoa 的角度看到问题吗?

最佳答案

事实证明,计时器加剧了问题,但原因实际上是我没有为 NSMenuItems 声明实例变量,因此它们被垃圾收集并导致 objc 级别崩溃。

关于主线程上的计时器时 cocoa 上下文菜单导致崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13643814/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com