我目前有代码使用JNI从java调用我的cocoa应用程序,在cocoa端的JNI函数中我创建了一个新线程,并像主函数那样分配我的NSApp委托。这是我在虚拟类中使用的代码,它创建了我的真正的类:
@implementation MenuLauncher
- (void)run {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
[NSApplication sharedApplication];
Menu *menu = [Menu sharedInstance];
[NSApp setDelegate:menu];
[NSApp run];
[pool release];
}
@end
这是我主要功能中的内容的副本,只有这是在一个主题中。
结果是Menu创建的界面没有响应,只给出了spinny沙滩球。
我在java端做一个简单的sleep语句来保持进程的活跃性。可可gui应该在它自己的线程中运行。那为什么要冷冻?
答案 0 :(得分:0)
您可能需要在主线程上运行Cocoa代码。此外,可能需要为java命令指定“-XstartOnFirstThread”标志(与SWT应用程序一样)。