我以这种方式使用NSOpenPanel:
NSOpenPanel *op=[NSOpenPanel openPanel];
[op setDelegate:self];
[op setCanChooseFiles:YES];
[op setCanChooseDirectories:YES];
[op setAllowsMultipleSelection:YES];
[op setPrompt:NSLocalizedString(@"Scan this",@"button of 'scan folder' open panel")];
[op setAccessoryView:nil];
[op setMessage:@""];
if ( [op runModalForDirectory:nil file:nil] == NSOKButton )
{
[self scanPaths:[op filenames] automatic:NO];
[[ScanController sharedController] setCurrentScanSidebarDriveName: @"(Custom)"];
} else {
NSLog(@"cancel clicked");
}
当我单击“取消”时,该应用程序将运行到我的方法的结尾,然后冻结一段时间(几秒钟)。我认为我的代码的这一部分是可以的。或不?当它崩溃时,我的调试器会发疯(At&T ..)。 :/有什么办法可以调试这种问题?有没有人看过?
谢谢。
最佳答案
我已经看到,当已暂停/置于待机状态的外部媒体需要一段时间才能回滚时,打开面板会使应用程序冻结几秒钟,而在单击“取消”时则不会。您是否曾经使用Instruments(Time Profiler)来了解当时的情况?
关于cocoa - NSOpenPanel卡住应用几秒钟,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4166016/