只有在从相机拍摄图像时,才会在ios 5.1.1中显示内存警告后应用程序崩溃

时间:2012-05-26 09:57:19

标签: iphone crash uiimagepickercontroller

嗨我在SO this too上经历过很多问题,但它没有帮助我ios 5.1.1。当我将图像前2次工作正常时,第3次应用显示内存警告并崩溃这是我的代码:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
[picker dismissModalViewControllerAnimated:YES];

UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
    if (image) {

    if ([appdel.arrImageData count]==0) {
        count=0;

    }
    count++;
    [appdel.arrImageData addObject:[image copy]];
}}

任何帮助都将不胜感激。

5 个答案:

答案 0 :(得分:3)

每次拍照时,都会在arrImageData中保留一份照片,然后填写内存,直到iOS因为占用太多内存而杀死你的app。重新考虑您的设计,以便在内存中只保留一个图像。如果出于任何原因需要所有图片,请将其保存在文档或缓存目录中并清理内存,然后再拍下另一张图片。

答案 1 :(得分:2)

我更正了您的代码,检查它是否有帮助

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


    UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
        if (image) {

        if ([appdel.arrImageData count]==0) {
            count=0;

        }
        count++;
        [appdel.arrImageData addObject:[image copy]];
    }

[picker dismissModalViewControllerAnimated:YES];
[picker release];
}

答案 2 :(得分:2)

我没有看到ImagePickerController的内存管理。但是在我打电话给dismissModal之后我解除了我的选择器的问题......

尝试在获得图像后关闭模态视图和选择器。

更新: 我同意你的看法。我有太多的问题与尝试让pickerController在iOS 3到5的几个设备上为许多iOS版本工作有关。因此我跳过了对iOS 3的支持并开始实现自己的代码来处理基于{的图片和电影{3}},AV Foundation Programming Guide

答案 3 :(得分:1)

应用经常在使用UIImagePickerController时收到内存警告。当你拍摄图像并一次又一次地拍摄图像时,你的记忆会不断增加(如果你没有正确管理内存。在我的情况下它曾经增加每1.5MB)。所以它可能会在第一次,第二次或第三次工作,并在下次接收内存警告,或者如果在后台运行的应用程序太多,它可能会在第一次收到内存警告。

重要的是这里如何处理此内存警告。一旦应用程序收到内存警告,就会调用所有活动视图控制器的viewDidUnload,您应该释放所有可以再次创建的不需要的对象。所以你的应用程序可能会崩溃,因为你在那里做错了。所以总之我们需要看到你的.h和.m文件..

答案 4 :(得分:1)

here你可以得到你想要的东西。

在那段代码中,我只是简单地使用自动释放池来释放内存。

我希望这对你有所帮助。