我在ios模拟器中试验我的应用程序,当我发现它从多任务栏中删除它然后重新运行它时会产生SIGKILL信号。 (我这样做是通过停止应用程序,运行另一个应用程序,然后从多任务栏中删除第一个应用程序并重新运行它。)
我认为这可能与我的最新实验有关,添加了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。
答案 0 :(得分:4)
从多任务栏中删除程序会阻止它运行。它等同于右键单击停靠栏中的应用程序图标时在OS X中获得的“强制退出”选项。
在iOS级别,这显然是通过向应用程序发送“kill”信号(称为SIGKILL)来完成的。