程序收到信号SIGABRT

Ash*_*hok 9 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];
Run Code Online (Sandbox Code Playgroud)

要显示文字:

 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];
Run Code Online (Sandbox Code Playgroud)

Ada*_*eld 15

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

  • 您正在向不支持/实现该消息的Objective-C对象发送消息.这导致可怕的"无法识别的选择器发送到实例"错误.
  • 你某处的断言失败了.在定义宏的非调试版本中NDEBUG,标准库宏在断言失败时assert(3)调用abort()
  • 你有一些内存stomping /分配错误.当malloc/ free检测到损坏的堆时,可以调用abort()(参见例如这个问题)
  • 你抛出一个未被捕获的异常(C++异常或Objective-C异常)

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

  • @ashok:如果你告诉我们你是如何解决这个错误的话会有很大帮助. (7认同)