Когда пользователь пытается выйти из системы или завершить работу, система попросит все приложения выйти. Если какое-либо приложение откажется выйти, действие будет отменено. Поскольку вы хотите отменить эти действия, вы, вероятно, также хотите предотвратить нормальное завершение работы приложения. Как часть последовательности завершения, приложение запрашивает разрешение у своего делегата. Таким образом, чтобы отменить выход из системы и завершение работы, а также запретить пользователю нормально выходить из приложения, можно использовать делегат приложения для отклонения действия.
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender
if([self shouldPreventTermination])
return NSTerminateCancel;
return NSTerminateNow;
}