2011-04-09 209 views
3

当我从多任务栏中删除它并重新运行时,我发现它产生了SIGKILL信号,我在ios模拟器中试用了我的应用程序。 (我通过停止应用程序,运行其他应用程序,然后从多任务栏中删除第一个应用程序并重新运行它来完成此操作。)IOS模拟器SigKill

我认为这可能与我最近的实验有关,但添加了C​​ore 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信号的情况下继续。

我试着用一个基本的核心数据模板程序,没有我自己的修改,并发生信号。我与其他不使用核心数据的程序一起尝试,并发生信号。当程序已经加载但未被调试时,我尝试了它,并且程序正常运行,即使在调试时出现问题。

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

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

我正在使用XCODE4。

回答

4

从多任务栏中删除程序将停止运行。这与右键单击扩展坞中的应用程序图标时在OS X中的“强制退出”选项等效。

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

+0

这很有道理。谢谢。 – Jim 2011-04-09 18:20:39