3

当我发现当我从多任务栏中删除它然后重新运行它时它会产生 SIGKILL 信号时,我正在 ios 模拟器中试验我的应用程序。(我通过停止应用程序,运行另一个应用程序,然后从多任务栏中删除第一个应用程序并重新运行它来做到这一点。)

我认为这可能与我最近的实验有关,添加 Core Data,但在尝试简化条件之后,我测试它的每个应用程序似乎都在发生这种情况。

代码在我的评论所标识的点停止在调试器中:

#import <UIKit/UIKit.h>

int main(int argc, char *argv[])
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    int retVal = UIApplicationMain(argc, argv, nil, nil);    //<- STOPS with SIGKILL here
    [pool release];
    return retVal;
}

我还发现它似乎正在停止,就好像它是一个断点一样。我单击继续按钮,它会继续,就好像什么都没发生一样。我在标记线上放了一个真正的断点,它停在那里。单击继续可以让程序继续运行,而不会出现 SIGKILL 信号。

我用 Core Data 的基本模板程序尝试了这个,没有我自己的修改,并且信号出现了。我用其他不使用Core Data的程序试了一下,信号就出现了。我在程序已经加载但未调试时尝试过,并且程序运行正常,即使在调试时出现问题。

当然,SIGKILL 不会给出任何帮助的错误消息。

有谁知道发生了什么?这似乎不是一个真正的问题,但我想确保我理解它。

我正在使用 XCODE4。

4

1 回答 1

4

从多任务栏中删除程序会阻止它运行。它相当于您在 OS X 中右键单击 Dock 中的应用程序图标时获得的“强制退出”选项。

在 iOS 级别,这显然是通过向应用程序发送称为 SIGKILL 的“kill”信号来完成的。

于 2011-04-09T16:29:39.690 回答