我正在为iOS 4及更高版本的应用程序调试一个问题,它在关闭时似乎无法保存进度。我正在使用Xcode 4.0并在模拟器中运行它,当我在模拟器中关闭应用程序时,将其从后台应用程序栏中删除,然后从模拟器重新启动它,它似乎在下面的retval行中断:< / p>
int main(int argc, char *argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
}
它引用了“线程1:程序收到的信号:”SIGKILL“,我不太清楚该怎么做(我使用Xcode 4只需几分钟)。
有人可以解释一下这里发生了什么,我是否只是在一个应用程序在后台粘贴(和/或删除它)时无法调试,或者这是否可能指向我保存进度的问题?当我的主代表收到时,我基本上触发了保存:
- (void)applicationWillTerminate:(UIApplication *)application
答案 0 :(得分:3)
您应该保存在applicationDidEnterBackground:
,而不是applicationWillTerminate:
。当后台中的应用程序关闭时,它会在不发送applicationWillTerminate:
的情况下被终止(这是您正在获取的SIGKILL)。但是,如果您支持没有多任务处理的设备或版本,则还需要保存applicationWillTerminate:
,因为它在这些情况下使用。