私はiPhoneアプリケーションで作業しており、UIImageピッカーコントロールを使用してフォトライブラリから画像を選択し、それを処理して、UIImageviewとUITextviewをそれぞれ使用して画像と対応する出力を表示しています。一部の画像では正常に動作し、一部の画像ではプログラムがクラッシュし、ブレークポイントでこれを確認しているときに、PROGRAM RECEIVED SIGNALSIGABRTのようなメッセージが表示されます。誰かが私にこのエラーを処理する方法を提案できますか?注:出力されるすべての画像について、ブレークポイントで確認しました。私のサンプルコードはここにあります、
画像を表示するには:
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()
が呼び出される最も一般的な理由は次のとおりです。
NDEBUG
を定義する非デバッグビルドでは、標準ライブラリマクロ assert(3)
アサーションが失敗するとabort()
を呼び出しますmalloc
/free
が破損したヒープを検出すると、abort()
を呼び出すことがあります(例: この質問 を参照)ほとんどすべての場合、デバッグコンソールは、abort()
が呼び出される原因についてもう少し情報を提供するので、常にそこを確認してください。