当以编程方式加载ViewController时,iPhone应用程序在第二次启动时崩溃

时间:2012-10-27 14:21:19

标签: iphone objective-c

当我在模拟器中第二次启动时,应用程序崩溃并出现错误“线程1:信号SIGKILL”。它第一次完美运行,但如果我完全关闭应用程序(双击主页按钮并关闭应用程序)并再次启动它 - 它会崩溃。

我发现其他人遇到了同样的问题(应用程序第二次崩溃),但原因并不相同。

我尝试创建一个新项目来隔离错误,当我尝试以编程方式加载ViewController时会发生这种情况。

我创建了两个简单的类:MainView和Loader(它应该加载MainView)。

在Loader类的viewDidAppear方法中,我有以下代码:

[super viewDidAppear:YES];

sleep(1); //Simulating to be doing stuff
MainView* mainView = [self.storyboard instantiateViewControllerWithIdentifier:@"MainView"];
[self presentViewController:mainView animated:YES completion:nil];

我得到以下回溯:

* thread #1: tid = 0x1f03, 0x9b5f5c22 libsystem_kernel.dylib`mach_msg_trap + 10, stop reason = signal SIGKILL
frame #0: 0x9b5f5c22 libsystem_kernel.dylib`mach_msg_trap + 10
frame #1: 0x9b5f51f6 libsystem_kernel.dylib`mach_msg + 70
frame #2: 0x0139b10a CoreFoundation`__CFRunLoopServiceMachPort + 186
frame #3: 0x012fe550 CoreFoundation`__CFRunLoopRun + 1312
frame #4: 0x012fdd84 CoreFoundation`CFRunLoopRunSpecific + 212
frame #5: 0x012fdc9b CoreFoundation`CFRunLoopRunInMode + 123
frame #6: 0x012b07d8 GraphicsServices`GSEventRunModal + 190
frame #7: 0x012b088a GraphicsServices`GSEventRun + 103
frame #8: 0x00011626 UIKit`UIApplicationMain + 1163
frame #9: 0x00001c4d progLoadingTest`main + 141 at main.m:16
frame #0: 0x9b5f5c22 libsystem_kernel.dylib`mach_msg_trap + 10
frame #1: 0x9b5f51f6 libsystem_kernel.dylib`mach_msg + 70
frame #2: 0x0139b10a CoreFoundation`__CFRunLoopServiceMachPort + 186
frame #3: 0x012fe550 CoreFoundation`__CFRunLoopRun + 1312
frame #4: 0x012fdd84 CoreFoundation`CFRunLoopRunSpecific + 212
frame #5: 0x012fdc9b CoreFoundation`CFRunLoopRunInMode + 123
frame #6: 0x012b07d8 GraphicsServices`GSEventRunModal + 190
frame #7: 0x012b088a GraphicsServices`GSEventRun + 103
frame #8: 0x00011626 UIKit`UIApplicationMain + 1163
frame #9: 0x00001c4d progLoadingTest`main + 141 at main.m:16

1 个答案:

答案 0 :(得分:0)

我发现这是您在模拟器中关闭然后在模拟器中重新启动的任何应用程序的正常行为。我巧合碰巧正在加载一个ViewController。因此,它确实不是崩溃。