我几乎专门在iOS应用上工作后,我正在开发OS X应用程序。如果用户退出,比如按下Command-Q,我怎样才能在本地存储一些数据并在应用程序真正内存不足之前将一些数据发送到我的服务器?
在iOS上,我通常会在检测到应用程序进入后台时启动后台事件。我已经尝试过聆听" ApplicationWillTerminate"但它似乎没有给我时间发送数据。
我应该在退出之前拦截菜单操作并执行我的工作吗?
我意识到这是一个非常基本的问题,但我的Google-Foo并没有让我得到一个直截了当的答案。
答案 0 :(得分:3)
applicationWillTerminate
确实是在应用程序退出之前清理内容的方法。
或者对于异步方式实现applicationShouldTerminate
,启动任务以异步方式存储和发送数据并返回NSTerminateLater
。
任务完成后,请致电
[NSApp replyToApplicationShouldTerminate:YES];
这里有一个代码段
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender
{
[self startTaskToSendDataWithCompletion:^() {
[NSApp replyToApplicationShouldTerminate:YES];
}];
return NSTerminateLater;
}