我在 iPhone 应用程序中工作,我使用 UIImage 选择器控件从照片库中选取图像,然后处理它并分别使用 UIImageview 和 UITextview 显示图像和相应的输出。对于某些图像,它工作正常,对于某些图像,程序崩溃了,在使用断点检查时,我收到诸如“程序已接收信号 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];
SIGABRT
是由abort(3)功能。如果没有更多信息,就不可能准确判断程序中发生了什么,但最常见的原因是abort()
被调用的是:
- 您正在向不支持/实现该消息的 Objective-C 对象发送消息。这会导致可怕的结果“无法识别的选择器发送到实例” error.
- 你在某个地方有一个失败的断言。在定义宏的非调试版本中
NDEBUG
, 标准库宏assert(3) calls abort()
当断言失败时
- 您有一些内存踩踏/分配错误。什么时候
malloc
/free
检测到损坏的堆,可能会调用abort()
(参见,例如这个问题)
- 您抛出了一个未捕获的异常(C++ 异常或 Objective-C 异常)
在几乎所有情况下,调试控制台都会为您提供有关导致问题的更多信息abort()
被叫到,所以一定要看看那里。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)