0

iPhoneで写真を撮っているときに、メモリの警告が表示され、アプリがクラッシュします。カメラを開くコードが機能し、写真がキャプチャされた後のコードが機能するため、これに対処する方法がわかりませんが、エラーはアプリの写真セクションを撮影するカメラのどこかにあります...

私はこのようにカメラを起動しています:

imagePicker = [[UIImagePickerController alloc] init];

if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) 
{
    [imagePicker setSourceType:UIImagePickerControllerSourceTypeCamera];
}
else 
{
    [imagePicker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
}

if ([UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceRear]) {
            imagePicker.cameraDevice = UIImagePickerControllerCameraDeviceRear;
} else if ([UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceFront]) {
            imagePicker.cameraDevice = UIImagePickerControllerCameraDeviceFront;
}

imagePicker.delegate = self;

[self presentModalViewController:imagePicker animated:YES];

「メモリ警告を受信しました」というメッセージが表示されます。Recorder_SourceStartedおよびAVCaptureDeviceDidStartRunningNotificationの直前。

次に、アプリがクラッシュする前に、Recorder_DidStartPreviewing、Recorder_FlashStateChanged、Recorder_DidStartFocusOperation、Recorder_DidCompleteFocusOperation、Recorder_FlashStateChanged、Recorder_WillCapturePhoto、Recorder_DidCapturePhoto、およびRecorder_PhotoStillImageSampleBufferReadyを取得します。

Recorder_PhotoStillImageSampleBufferReadyは、アプリがクラッシュする前に受け取る最後の通知です。_UIImagePickerControllerUserDidCaptureItemに到達しません。その時点で、アプリは私が再度作成したコードの実行を開始します。

クラッシュしない場合があります...メモリの警告が表示され、アプリは正常に動作し続けますが、このメモリの警告が原因でクラッシュする可能性があり、テスト中にクラッシュが発生するので、これを引き起こしている原因を突き止め、修正してください。

どんな助けでも素晴らしいでしょう!ありがとう!

4

1 に答える 1

1

私はアプリでtableViewsを割り当てていました(ARCを使用しているため、割り当てを解除していません)。alloctableViewsを呼び出した後、画像をキャプチャしようとするとメモリがクラッシュするようです。テーブルビューが要求されるたびに割り当てるのではなく、ユーザーがテーブルを表示する必要があるときに、テーブルビューの.hiddenプロパティをオンまたはオフに設定するように変更しました。これで、写真を撮ったときにアプリがクラッシュすることはありません。時々メモリ警告がありますが、クラッシュすることはなく、写真を撮るときにメモリ警告がまったくないことがよくあります。

于 2013-04-06T06:20:31.700 に答える