【问题标题】:Saving images taken from camera into NSMutableArray将从相机拍摄的图像保存到 NSMutableArray
【发布时间】:2014-02-27 22:45:52
【问题描述】:

首先让我解释一下我要做什么。 我有一个表格视图,它就像一堆“专辑”。每个单元格将用户重定向到相应的集合视图,我在其中加载图像。 现在,我让用户使用相机拍照,我正在使用图像选择器控制器,然后我将它保存在这样的属性中:

[[[Album sharedInstance].albumList valueForKey:@"nameOfFolder"] addObject:info[UIImagePickerControllerOriginalImage]];

“albumList”是一个 NSMutableDictionary,一个键(代表一个文件夹)的每个值都是一个 NSMutableArray。每拍一张新照片后,我都会重新加载集合视图并将照片放在那里。 但是,不出所料,这样我会得到一个内存警告,主要是因为我将原始图像保存在数组中,我猜。

所以我的问题是,最好的方法是什么? 我考虑将图像的 URL 保存在数组中,然后当我需要它时,我会使用 URL 检索这些图像并将它们显示在集合视图中。 另一个想法是直接保存到文档中,而不需要数组,但我认为这样每次检索和显示图像时都会进行太多处理。

那么,有人知道我应该采取哪种方法吗? 提前致谢!

【问题讨论】:

  • 使用它们的键在 nsmutabledictionary 中添加拍摄的图像数据并将该字典添加到您的数组中。这是在数组中添加图像的最佳方式。

标签: ios iphone objective-c nsmutablearray uiimagepickercontroller


【解决方案1】:

我建议您将相机图像剪辑为缩略图,将原始图像和缩略图都保存在文档目录中。检索表格视图和集合视图的缩略图。检索图像视图的原始图像以获取图像详细信息。

大图可能会降低您的应用性能,因此请避免使用大图并将其显示在小框架中。

顺便说一句,从文档目录加载小图像比大图像快得多。

【讨论】:

    【解决方案2】:

    在我看来,您可以直接将图像保存到文档中,而不需要数组。您可以在后台线程中开始将图像保存在文档中。

    这需要处理时间,但您不会在应用程序中遇到任何内存问题。

    【讨论】:

      【解决方案3】:

      创建一个将作为 NSMutableArray 副本的属性,这样您是在更新数组但不是直接更新,它不应该造成内存问题

      - (NSArray *)allAlbumList { return [self.albumList copy]; //return [NSArray arrayWithArray:self.listItems];}

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-10-19
        • 2017-09-20
        • 1970-01-01
        • 1970-01-01
        • 2013-06-29
        • 1970-01-01
        • 2021-07-05
        相关资源
        最近更新 更多