2

右上にUICollectionViewとバーボタンがあります(CameraViewController1:UICollectionViewController)。フローは、写真を撮ると、画像をトリミングできる新しいビューコントローラーに移動します。ユーザーには、いずれかを選択した後に使用とキャンセルの2つのオプションがありますこのオプションを選択すると、画像がコレクション ビューに戻り、セルのように配置されます。たくさんの写真を撮りたいのですが、アプリがすぐにクラッシュし、「メモリが原因でアプリが終了しました」というメッセージが表示されるため、最大 3 枚の写真しか撮影できません。しかし、最悪の部分は、iOS 7 を実行している iPhone 5 で同じアプリをテストしたときにクラッシュが発生しなかったことです。

ここに私のコード

- (IBAction)TakeaPhoto:(id)sender {

    [[UIApplication sharedApplication]setStatusBarHidden:FALSE withAnimation:NO];

    gallery=0;
    picker1 = [[UIImagePickerController alloc] init];
    picker1.delegate = self;
    self.resizeableCropArea =YES;
    self.cropSize=CGSizeMake(300,350);
    //picker1.allowsEditing = YES;
    picker1.sourceType = UIImagePickerControllerSourceTypeCamera;

    [self presentViewController:picker1 animated:YES completion:NULL];
}


- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

    [self dismissViewControllerAnimated:YES completion:NULL];

    UIImage *image =  [info objectForKey: UIImagePickerControllerOriginalImage];

    image_cap = [self imageTemp:image scaledToSize:CGSizeMake(320, 370)]; 


    dataTemp = UIImageJPEGRepresentation(image,0.0);

    CropViewController *cropController = [[CropViewController alloc] init];

    cropController.sourceImage = [info objectForKey:UIImagePickerControllerOriginalImage];

    Original_img = UIImageJPEGRepresentation(cropController.sourceImage,0.0);

    [original_image addObject:[UIImage imageWithData:Original_img]]; //original_image Nsmutablearray

    NSLog(@"source image=%@",cropController.sourceImage);

    cropController.resizeableCropArea = self.resizeableCropArea;

    cropController.cropSize = self.cropSize;

    cropController.delegate = self;

    Cancel_Image= cropController.sourceImage;

    [self.navigationController pushViewController:cropController animated:YES];

}
4

1 に答える 1

0

@Ramanan RR、@Rushabhのコメントに完全に同意します..TakeaPhotoメソッド呼び出しでUIImagePickerConrtollerを割り当てているため、そのUIImagePickerControllerをさらに何度も割り当てていますが、それを複数回割り当てる必要はありません。これにより、メモリが損なわれるため、アプリが終了またはクラッシュします..viewDidLoadでその時間を1回割り当てるだけで、UIImagePickerControllerを強力なプロパティとして実行することをもう1つ確認してください。過去に問題を解決するのに丸一日かかったからです。 ...

これがうまくいき、アプリがスムーズに動作することを願っています... :)

于 2014-03-14T12:19:34.470 に答える