在iPad Mini上的iOS7中,UIImagePickerController因低内存而崩溃

7
我的应用在所有设备和iOS版本上都很好,但是当它运行在iPad mini上的iOS7时,当我分配初始化UIImagePickerController并显示它时,会突然出现低内存警告并崩溃。这是我捕获图像的代码。
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
{
    UIImagePickerController *imagePickerController;
    if ([UIUtilityClass isCurrentVersionIsIOS7OrGreater]) {
        UIImagePickerController* imagePickerController = [[UIImagePickerController alloc] init];
        [imagePickerController setDelegate:self];
        imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
        imagePickerController.mediaTypes = [NSArray arrayWithObjects:(NSString *)kUTTypeImage,nil];
        imagePickerController.allowsEditing=NO;
        CGFloat scaleFactor=1.3f;

        switch ([UIApplication sharedApplication].statusBarOrientation) {
            case UIInterfaceOrientationLandscapeLeft:
                imagePickerController.cameraViewTransform = CGAffineTransformScale(CGAffineTransformMakeRotation(M_PI * 90 / 180.0), scaleFactor, scaleFactor);
                break;
            case UIInterfaceOrientationLandscapeRight:
                imagePickerController.cameraViewTransform = CGAffineTransformScale(CGAffineTransformMakeRotation(M_PI * -90 / 180.0), scaleFactor, scaleFactor);
                break;
            case UIInterfaceOrientationPortraitUpsideDown:
                imagePickerController.cameraViewTransform = CGAffineTransformMakeRotation(M_PI * 180 / 180.0);
                break;
            default:
                break;
        }

    }
    else
    {
        imagePickerController = [[NonRotatingUIImagePickerController alloc] init];
        imagePickerController.delegate = self;
        imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
        imagePickerController.mediaTypes = [NSArray arrayWithObjects:(NSString *)kUTTypeImage,nil];
        imagePickerController.allowsEditing = YES;
    }


    popoverController = [[UIPopoverController alloc] initWithContentViewController:imagePickerController];
    popoverController.delegate=self;
    [popoverController presentPopoverFromRect:CGRectMake(626,142,120,135) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
    [imagePickerController release];
    newMedia = YES;

}

之后,我使用以下代码捕捉图像。
 -(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
 {


[popoverController dismissPopoverAnimated:true];
[popoverController.delegate popoverControllerDidDismissPopover:popoverController];

UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
int orientation=image.imageOrientation;
image=[image imageToFitSize:PIC_SIZE method:MGImageResizeCrop];
    switch (orientation) {
        case UIImageOrientationUp:
            // do nothing
            break;
        case UIImageOrientationDown:
            image=[image imageRotatedByDegrees:180.0];
            break;
        case UIImageOrientationLeft:
            image=[image imageRotatedByDegrees:90.0];
            image=[image imageRotatedByDegrees:180];
            break;
            //2
        case UIImageOrientationRight:
            image=[image imageRotatedByDegrees:-90.0];
            image=[image imageRotatedByDegrees:180];
            break;
        default:
            break;
    }

   }

你已经解决了iPad mini的内存警告崩溃问题吗?请建议我如何处理这种情况? - Mani
我还没有找到任何解决方案。 - NaXir
我也遇到了同样的问题,但是我发现,在使用Xcode进行调试时会崩溃,但在以普通用户形式从设备启动应用程序时,它运行良好……看起来iOS存在bug。 - HarshIT
1
有时候对我来说运行得很好,特别是在除了iPad mini之外的设备上总是能够正常工作。在iPad Mini上通常会更容易崩溃。 - NaXir
请告诉我如果你找到了解决方案。这个问题让我疯狂 :( - Pawan Sharma
显示剩余5条评论
1个回答

0
你有没有在不调用imagePickerController的情况下测试过它?如果你正在使用ARC,我认为你不需要这样做。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接