嘿伙计们, 我还有一个问题,我在互联网上找不到答案。我希望你能帮助我。
我正在编写一个在后台运行的Cocoa应用程序,并为我完成了几项任务。如果我退出应用程序,我会显示NSAlert。一切都很好。但这是我的问题。此警报来自applicationShouldTerminate:
方法内部。因此,如果我退出,则会触发此方法并显示警报。但是,即使我返回NSTerminateCancel
,OSX也会退出应用程序并注销而无需等待响应。
如何强制操作系统停止从我的应用程序中注销/关闭,以便用户(我自己:-D)可以决定做什么。 (它只是一个对话框,询问是否应该保存完成的工作。)
我希望你能帮助我......
桑德罗
答案 0 :(得分:0)
Mac OS X基于UNIX。当系统关闭时,发送SIGKILL信号以终止所有进程。但在此之前,会发送SIGTERM信号,通知进程将发生关闭。
我认为解决方案在于处理信号,即检测和阻止信号。关于这一点,您可以在GNU C Library: Signal Handling: Blocking Signals.
中找到指导那里的示例可能与BSD有关,但您可能知道OS X核心是从BSD派生的,因此OS X支持它。此外,Objective-C支持C.