2010-11-12 5 views
1

я использую NSOpenPanel так: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 ..). :/Есть ли способ отладки этой проблемы? Кто-нибудь видел это? Спасибо.

+0

Это происходит и при показе NSOpenPanel в виде листа. Я думаю, что это может быть связано с тем, что QuickLook не может создать предварительный просмотр для выбранного элемента и блокировку при закрытии панели. –

ответ

0

Я видел, как открытая панель замораживает приложение в течение нескольких секунд, когда внешние носители, которые были приостановлены/переведены в режим ожидания, требуют некоторое время назад, но никогда при ударе Отмена. Вы использовали Инструменты (Time Profiler), чтобы узнать, что он делает в этот момент?

+0

Какой профиль инструментов вы предложите? – mirap

+0

Тот, о котором я упомянул в своем ответе: Time Profiler. –

+0

Спасибо. Я попробовал ... но без каких-либо полезных выходов .. Нет подключенного внешнего носителя. Когда я нажимаю «Сканировать это», все работает нормально. – mirap

Смежные вопросы