我有一个Swing
应用程序并进行JNI
方法调用以打开NSOpenPanel
. 在某些计算机上(不幸的是,我没有发现它们之间的相似之处)它完全挂起应用程序。在大多数计算机上它都能正常工作。如果代码将应用程序挂在特定的 Mac 上,它会在每次执行时都挂起。
这是我打开 NSOpenPanel 的方法:
JNF_COCOA_ENTER(env);
// My helper Obj-c object to make a selector call
OpenFileObject *openFile = [[OpenFileObject alloc] init];
if ([NSThread isMainThread])
[openFile showOpenFileDialog];
else
[JNFRunLoop performOnMainThread:@selector(showOpenFileDialog) on:openFile withObject:nullptr waitUntilDone:TRUE];
// ...Handles results
JNF_COCOA_EXIT(env);
这是showOpenFileDialog
方法:
NSOpenPanel *panel = [NSOpenPanel openPanel];
[panel setCanChooseFiles:canChooseFiles];
[panel setCanChooseDirectories:canChooseFolders];
[panel setAllowsMultipleSelection:allowMultiSelection];
[panel setAllowedFileTypes:fileTypes];
[panel setTitle:dialogTitle];
if ([panel runModal] == NSFileHandlingPanelOKButton)
urls = [[panel URLs] copy];
else
urls = nullptr;
这是一个挂起报告:https ://gist.github.com/4207956
有任何想法吗?