Контекстное меню какао, вызывающее сбой, когда таймер в основном потоке

Я работаю в моно на 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);

Как только я пытаюсь получить доступ к контекстному меню, приложение вылетает - каждый раз.

Если я не запускаю таймер, контекстное меню в порядке.

Я пробовал буквально все, чтобы заставить это работать, и у меня закончились идеи, поэтому мне действительно нужна чья-то помощь, пожалуйста, даже просто указатель на то, где может быть проблема. Забыв о том, что это моно только сейчас, может ли кто-нибудь увидеть проблему с точки зрения какао?


person user1532510    schedule 30.11.2012    source источник


Ответы (1)


Оказалось, что проблема усугублялась таймером, но на самом деле причина заключалась в том, что я не объявлял переменные экземпляра для NSMenuItems, поэтому они собирали мусор и вызывали сбой на уровне объекта.

person user1532510    schedule 05.12.2012