Выйти из приложения, когда NSWindow закрывается - PullRequest
10 голосов
/ 15 октября 2010

Как правильно выйти из приложения Mac OS X, когда основное (единственное) закрывается?

Я знаю там метод - (void)windowWillClose:(NSNotification *)notification в NSWindowDelegate.Но в моем случае это не совсем подходит, потому что он называется до закрытия NSWindow.

1 Ответ

28 голосов
/ 15 октября 2010

Вы не можете иметь событие windowDidClose, поскольку сопровождающее его уведомление будет содержать недопустимый объект (окно, вероятно, было освобождено при закрытии).Чтобы достичь того, что вам нужно, сделайте ваш класс делегатом Приложения и реализуйте следующий метод:

- (BOOL) applicationShouldTerminateAfterLastWindowClosed: (NSApplication *) theApplication;

Из этого метода верните YES.

Если ваш объект контроллера имеетэкземпляр в MainMenu.nib, просто установите соединение с владельцем файла (что означает объект приложения в файле MainMenu.nob).Удерживая нажатой клавишу «Control», перетащите «Владелец файла» к своему объекту и подключите выход делегата.

Или в исходном коде вставьте нечто подобное в метод init объекта вашего контроллера:

[NSApp setDelegate: self];
...