当在ipod touch上运行时,不是模拟器..'程序接收信号SIGABRT'

时间:2011-01-27 11:43:04

标签: iphone objective-c cocoa-touch signals sigabrt

我的应用程序在模拟器中运行得很好,但现在我有开发人员许可证,当我尝试在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;
}

`

3 个答案:

答案 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将使用深色文本突出显示堆栈中属于您的代码的方法。这是第一批嫌犯。