【发布时间】:2012-04-30 17:38:47
【问题描述】:
所以,这是我的情况:
我正在开发一个非标准的基于文档的应用程序,我想处理在任何文档中仍有未保存的更改时中止终止的情况。
我最初的想法是:
- 用户尝试退出应用程序(通过
"Quit XXXXX"菜单项或单击"X"按钮) - 有修改过的文件吗?
- 如果否:退出
- 如果是:通知用户有未修改的文档。如果他想继续,那就退出。否则取消终止。
所以,我决定以委托方式进行。
在我的应用程序委托中,我实现了:
-
-windowToClose:(在NSWindowWillCloseNotification上触发) applicationShouldTerminate:applicationShouldTerminateAfterLastWindowClosed:
现在,这就是我的想法。在applicationShouldTerminate: 方法中:
- 如果不存在修改过的文档,则返回
NSTerminateNow - 如果有修改过的文档,返回
NSTerminateCancel。在这种情况下,弹出一个警告表或类似的东西,如果用户确认他想退出,然后打电话给[NSApp terminate:nil];
这是正确的做法吗?
有什么建议吗?
【问题讨论】:
标签: objective-c cocoa terminate nsapplication nsapplication-delegate