调试时从后台删除应用程序

时间:2011-03-21 17:55:38

标签: xcode ios background-process

我正在为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

1 个答案:

答案 0 :(得分:3)

您应该保存在applicationDidEnterBackground:,而不是applicationWillTerminate:。当后台中的应用程序关闭时,它会在不发送applicationWillTerminate:的情况下被终止(这是您正在获取的SIGKILL)。但是,如果您支持没有多任务处理的设备或版本,则还需要保存applicationWillTerminate:,因为它在这些情况下使用。