UIImagePickerControllerOriginalImage получил предупреждение памяти и получает сбой

У меня есть UICollectionView и кнопка панели в правом верхнем углу (CameraViewController1: UICollectionViewController). Поток состоит в том, что, когда я делаю снимок, он перемещается в новый контроллер представления, где изображение может быть обрезано. У пользователя есть две опции Use и Cancel после выбора любого из эта опция возвращает изображение обратно в коллекцию и выглядит как ячейки. Я хочу сделать много фотографий. Но я могу сделать до 3 фотографий только тогда, когда приложение сразу падает и показывает сообщение "Приложение остановлено из-за памяти давление ". Но хуже всего то, что когда я тестировал одно и то же приложение на iPhone 5 под управлением iOS 7, сбоя не произошло. Когда я тестирую то же самое на iPhone 4 под управлением iOS 7, происходит сбой и выдается предупреждение о получении памяти.

Вот мой код

- (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];

}

1 ответ

@Ramanan R R, я полностью согласен с комментарием @Rushabh. Вы выделяете этот UIImagePickerController еще много раз, так как при вызове метода TakeaPhoto вы выделяете UIImagePickerConrtoller, нет необходимости выделять это несколько раз. Это приводит к порче памяти, поэтому ваше приложение будет прерываться или зависать. Просто выделите это один раз в viewDidLoad, убедитесь еще одну вещь, сделайте UIImagePickerController как сильное свойство, потому что в прошлом у меня был целый день, чтобы решить проблему...

Надеюсь, что это будет работать для вас, и ваше приложение будет работать гладко...:)

Другие вопросы по тегам