我的应用程序在模拟器中运行得很好,但现在我有开发人员许可证,当我尝试在iPod Touch上运行时,xcode说GBD: Program received signal: "SIGABRT".
我该怎么做才能找出问题所在?它在构建时不会发出警告。
编辑:抱歉,这是我第一次在设备上运行应用,所以请耐心等待。我刚注意到Organizer窗口和调试器正在给我一个关于设备上发生的事情的日志。所以这就是问题所在: [UIApplication setStatusBarHidden:withAnimation:]: unrecognized selector sent to instance 0x1160e0
它所引用的代码位于(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
这是它遇到问题的代码:
`if(interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight){
self.view = clockView;
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:NO];
return YES;
}
if (interfaceOrientation == UIInterfaceOrientationPortrait) {
self.view = homeView;
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:NO];
return YES;
}
if (interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown) {
self.view = homeView; [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:NO];
return YES;
}
else {
return YES;
}
`
答案 0 :(得分:3)
[UIApplication setStatusBarHidden:withAnimation:]:无法识别的选择器发送到实例0x1160e0
您的设备上似乎不存在该方法。它是在3.2上添加的。您的iPod运行的是哪个iOS版本?此外,第二个参数类型错误
如果它更低,并且你想支持它,你应该考虑
if ([[UIApplication sharedApplication] respondsToSelector:@selector(setStatusBarHidden:withAnimation:)]) {
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
} else {
[[UIApplication sharedApplication] setStatusBarHidden:NO animated:NO];
}
答案 1 :(得分:1)
在代码的最开始处插入一个断点,然后在调试模式下运行它。使用调试器逐行逐步执行代码,并查看代码在SIGABRT发生之前的距离。
但您是否已将iPod touch设置为配置设备?
哦,只是发现了别的东西。我不确定您是否将正确的数据发送到withAnimation参数。查看文档:
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:NO];
应该是这样的:
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
答案 2 :(得分:0)
在调试模式下运行应用程序时,您可以监控控制台(运行 - >控制台)。对于大多数崩溃,您将收到某种错误消息,指出您正确的方向。此外,在调试视图中,您将能够在应用程序崩溃时看到堆栈(调试视图的左上角是Xcode中的默认布局)。 Xcode将使用深色文本突出显示堆栈中属于您的代码的方法。这是第一批嫌犯。