程序收到信号SIGABRT

时间:2010-10-08 04:05:09

标签: iphone objective-c ios4

我在iPhone应用程序中工作,我使用UIImage选择器控件从照片库中选择一个图像,然后处理它并分别使用UIImageview和UITextview显示图像和相应的输出。对于一些图像,它工作正常,一些图像程序崩溃,并在检查这个断点时,我收到消息,如PROGRAM RECEIVED SIGNAL SIGABRT。任何人都可以建议我如何处理这个错误。 注意:对于我得到输出的每个图像,我用断点检查它。 我的示例代码在这里,

显示图片:

 CGRect myImageRect = CGRectMake(0.0f, 0.0f, 320.0f, 240.0f);
 UIImageView *myImage = [[UIImageView alloc] initWithFrame:myImageRect];
 [myImage setImage:img];
 myImage.opaque = YES; // explicitly opaque for performance
 [self.view addSubview:myImage];
 [myImage release];

显示文字:

 CGRect frame = CGRectMake(0.0f, 250.0f, 320.0f,25.0f);
 UITextView * tmpTextView = [[UITextView alloc]initWithFrame:frame];
 tmpTextView.text = [NSString stringWithFormat:@"%@%@",@"value: ", somevalue];
 [self.view addSubview:tmpTextView];
 [tmpTextView release];

1 个答案:

答案 0 :(得分:15)

abort(3)函数引发了{p> SIGABRT。如果没有更多信息,就不可能确切地告诉您程序中发生了什么,但abort()被调用的最常见原因是:

  • 您正在向不支持/实现该消息的Objective-C对象发送消息。这会导致可怕的"unrecognized selector sent to instance"错误。
  • 你某处的断言失败了。在定义宏NDEBUG的非调试版本中,标准库宏assert(3)在断言失败时调用abort()
  • 您有一些内存踩踏/分配错误。当malloc / free检测到损坏的堆时,可以调用abort()(请参阅,例如this question
  • 您正在抛出未捕获的异常(C ++异常或Objective-C异常)

在几乎所有情况下,调试控制台都会为您提供有关导致abort()被调用的内容的更多信息,因此请务必查看。