作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在 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/
我是一名优秀的程序员,十分优秀!