我以这种方式使用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/

10-09 01:49