Cocoa :Отображение ошибки после начала NSApp beginSheet приводит к тому, что главное окно скрывается

Я разбил это на очень маленький проект. Использование следующего кода в делегате приложения:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    TestingWindowController * testingWindowController = [[TestingWindowController alloc] initWithWindowNibName: @"TestingWindowController"];

    // Begin our sheet
    [NSApp beginSheet: testingWindowController.window
       modalForWindow: self.window
        modalDelegate: self
       didEndSelector: @selector(windowDidEnd:returnCode:contextInfo:)
          contextInfo: NULL];
}

- (void)windowDidEnd:(id)alert returnCode:(NSInteger)returnCode contextInfo:(id) contextInfo
{
    // If the user did not accept, then we really don't care what else they did!
    if (returnCode != NSOKButton) return;

    // We have had an error. Display it.
    [[NSApplication sharedApplication] presentError: nil
                                     modalForWindow: self.window
                                           delegate: nil
                                 didPresentSelector: nil
                                        contextInfo: NULL];
}

А следующее действие привязано к кнопке на пера Windows. (Обратите внимание, что окно пера также не отображается при запуске ).

- (IBAction) onClose: (id) sender
{
    [[NSApplication sharedApplication] endSheet: self.window
                                     returnCode: NSOKButton];

    [self.window orderOut: nil];    
} // End of onClose

В конечном итоге происходит следующее: как только я запускаю onClose, все окна исчезают, и у меня не остается ничего, кроме диалогового окна с ошибкой (, главное окно исчезло ).Error dialog with no main window

Что-то не так с моим кодом? Почему мое главное окно исчезает?

ПРИМЕЧАНИЕ. :Я знаю, что не передаю ошибку методу presentError. Я намеренно оставил это значение null, так как у меня было совсем немного времени, чтобы написать пример кода. Передача фактической ошибки приводит к такому же поведению.

Пример проекта доступен здесь .

5
задан Anoop Vaidya 12 May 2013 в 08:19
поделиться