SIGKILL在iPhone上发布应用程序信号,但不是Xcode

时间:2012-08-31 20:30:31

标签: iphone objective-c xcode crash sigkill

好的,所以从新鲜的(app以前没有安装在iPhone模拟器上),应用程序启动正常。然后我按下主页按钮并单击图标,它也没关系。然后,如果我按下主页按钮,然后从多任务栏关闭应用程序,然后按下图标我收到SIGKILL错误。

然而,当我在Xcode中按下它时,它总是完美无缺地工作(即使我从多任务栏关闭它,在那里按下图标失败)。这只是模拟器的怪癖吗?这个行为只是在我实现了一些NSUserDefault东西之后才开始,记住它的状态等。它确实记住所有的默认值,当它工作时。

感谢任何帮助。

编辑:

- (void)viewDidLoad
{

NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
NSDictionary *appDefaults = [NSDictionary dictionaryWithObjectsAndKeys:
                                 [NSNumber numberWithInt:1], @"firstRun",
                        nil];
[defaults registerDefaults:appDefaults];
if ([[defaults objectForKey:@"firstRun"] intValue] == 1) {
//do the stuff required at first launch
table = [NSMutableArray array];
Stocks =[NSMutableArray array];
Money =1234.56;
mem=@"GOOG";
[defaults setDouble:Money forKey:@"money"];
[defaults setObject:mem forKey:@"ticker"];
[defaults synchronize];
self.Input.text=mem;


- (void)viewWillAppear:(BOOL)animated
{

NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
if ([[defaults objectForKey:@"firstRun"] intValue] == 0) {
    [self entered:nil];

} else if ([[defaults objectForKey:@"firstRun"] intValue]== 1){
    [defaults setObject:[NSNumber numberWithInt:0] forKey:@"firstRun"];
    [defaults synchronize];
}
[super viewWillAppear:animated];
}

以下是我认为可能与我的MainViewController中的NSUserDefaults有关的问题(我没有在任何其他viewController中使用UserDefaults)。

我还在其他一些方法中执行了一些setObjects / synchronize,但它们只在单击一个按钮时执行(在崩溃时不会发生)。

1 个答案:

答案 0 :(得分:3)

从多任务栏中删除应用程序时,实际上是永久关闭它。因此,您销毁实例(所有进程都被杀死),XCode与您的应用程序关联。这就是您收到SIGKILL错误的原因。

有关iPhone模拟器的更多信息:http://developer.apple.com/library/ios/#DOCUMENTATION/Xcode/Conceptual/ios_development_workflow/25-Using_iOS_Simulator/ios_simulator_application.html

实际上,如果您在实际设备上运行应用程序并将其从多任务栏中删除,而应用程序已连接到XCode,则甚至会发生这种情况。但是,如果您的应用程序安装在设备上而未连接到Xcode以进行运行/测试/分析,则不会出现此问题。