好的,所以从新鲜的(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,但它们仅在单击按钮时执行(在崩溃时不会发生).
解决方法
从多任务栏中删除应用程序时,实际上是永久关闭它.因此,您销毁实例(所有进程都被杀死),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以进行运行/测试/分析,则不会出现此问题.