0

嗨,我也经历了很多关于 SO问题,但它对 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]];
}}

任何帮助,将不胜感激。

4

5 回答 5

3

每次你拍照时,你都会在 arrImageData 中保存一份副本,这样就会填满内存,直到 iOS 杀死你的应用程序,因为你占用了太多内存。重新考虑您的设计,以便您只在内存中保留一张图像。如果您出于某种原因需要所有图片,请将其保存在文档或缓存目录中并清理内存,然后再拍摄另一张照片。

于 2012-05-26T10:02:48.610 回答
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];
}
于 2012-05-26T10:06:42.087 回答
2

我没有看到您的 ImagePickerController 的内存管理。但是在我调用dismissModal之后,我在释放我的选择器时遇到了问题......

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

更新:我同意你的看法。我有太多与尝试让 pickerController 在从 iOS 3 到 5 的多个设备上适用于许多 iOS 版本相关的问题。结果我跳过了对 iOS 3 的支持并开始实现自己的代码来处理基于AV的图片和电影基础编程指南AV 基础框架参考

于 2012-05-26T10:07:15.747 回答
1

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

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

于 2012-05-26T10:30:33.720 回答
1

在这里你可以得到你想要的。

在该代码中,我只是将自动释放池用于释放内存。

我希望这可以帮助你。

于 2012-05-26T12:32:51.220 回答