将从相机拍摄的图像保存到NSMutableArray中

时间:2014-02-27 22:45:52

标签: ios iphone objective-c nsmutablearray uiimagepickercontroller

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

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

“albumList”是一个NSMutableDictionary,一个键(代表一个文件夹)的每个值都是一个NSMutableArray。拍完每张新照片后,我会重新加载收藏视图并将照片放在那里。 但是,正如预期的那样,我会收到内存警告,主要是因为我想将原始图像保存在数组中,我猜。

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

那么,谁知道我应该采取哪种方法? 提前谢谢!

3 个答案:

答案 0 :(得分:0)

从我的角度来看,您可以直接将图像保存到文档中,而无需使用数组。您可以在后台线程中开始在文档中保存图像。

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

答案 1 :(得分:0)

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

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

BTW,从文档目录加载小图像比大图像快得多。

答案 2 :(得分:-1)

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

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