首先让我解释一下我要做的事情。 我有一个表视图,就像一堆“专辑”。每个单元格将用户重定向到相应的集合视图,我在其中加载图像。 现在,我让用户使用相机拍照,我正在使用图像选择器控制器,然后我将它保存在这样的属性中:
[[[Album sharedInstance].albumList valueForKey:@"nameOfFolder"] addObject:info[UIImagePickerControllerOriginalImage]];
“albumList”是一个NSMutableDictionary,一个键(代表一个文件夹)的每个值都是一个NSMutableArray。拍完每张新照片后,我会重新加载收藏视图并将照片放在那里。 但是,正如预期的那样,我会收到内存警告,主要是因为我想将原始图像保存在数组中,我猜。
所以我的问题是,实现这一目标的最佳方法是什么? 我想在数组中保存图像的URL,然后当我需要它时,我会用URL检索这些图像并在集合视图中显示它们。 另一个想法是直接保存到文档,而不需要数组,但我认为每次检索和显示图像时我都会有太多的处理。
那么,谁知道我应该采取哪种方法? 提前谢谢!
答案 0 :(得分:0)
从我的角度来看,您可以直接将图像保存到文档中,而无需使用数组。您可以在后台线程中开始在文档中保存图像。
这需要处理时间,但您不会在应用程序中遇到任何内存问题。
答案 1 :(得分:0)
我建议您将相机图像剪辑为缩略图,将原始图像和缩略图保存在文档目录中。检索表视图和集合视图的缩略图。检索图像视图的原始图像以获取图像细节。
大图片可能会降低您的应用性能,因此请避免使用大图像并将其显示在较小的帧中。
BTW,从文档目录加载小图像比大图像快得多。答案 2 :(得分:-1)
创建一个属性,该属性将是NSMutableArray的副本,这样您就是更新数组但不直接更新它不应该创建内存问题
- (NSArray *)allAlbumList {
return [self.albumList copy];
//return [NSArray arrayWithArray:self.listItems];}