Итак, вот мой случай:Как правильно обрабатывать завершение приложения какао?
Я разрабатываю нестандартное приложение на основе документов, и я хочу обработать сценарий прерывания завершения, когда в любом из документов по-прежнему сохраняются несохраненные изменения.
Моя первоначальная идея заключается в том:
- Пользователь пытается выйти из приложения (либо через пункт меню
"Quit XXXXX"
или нажав на кнопку"X"
) - Существуют ли какие-либо измененные документы?
- если НЕТ: прекратить
- если ДА: уведомить пользователя о том, что существуют немодифицированные документы. если он хочет продолжить, то брось. Остальное прекращение отмены.
Итак, я решил сделать это делегатским путем.
В моей заявке делегат, я реализовал:
-windowToClose:
(срабатывает наNSWindowWillCloseNotification
)applicationShouldTerminate:
applicationShouldTerminateAfterLastWindowClosed:
Теперь, это то, что я имею в виду , В методе applicationShouldTerminate:
:
- Возврат
NSTerminateNow
если нет измененных документов не существует - Возврат
NSTerminateCancel
если Есть модифицированные документы. В этом случае, выскочит уведомление лист или что-то подобное, и если пользователь подтверждает, что он хочет уйти, то называть[NSApp terminate:nil];
Это правильный путь идти о нем?
Любые предложения?
Хорошая идея; однако, вот код, который я использую для предупреждающего листа YES-NO (http://snippet.mx/Ra8E). Как я могу сделать это так, чтобы он возвращался в пределах одной и той же функции? –