2

我创建了一个应用程序,用户可以在其中上传图像,他们还可以看到其他用户上传的所有图像。我已经集成了分页代码并一次下载 10 张图像并将它们显示在 UITableView 上。我已将 AFNetworking 用于将图像保存在缓存中的任务。问题是当用户不断下载图像并且计数达到大约 300 张图像时,应用程序会因为设备内存不足而崩溃。我正在寻找这个问题的最佳解决方案。我的想法是一次在缓存中保留 50 张图像,当用户下载较新的图像时,旧的图像将从缓存中删除。也请让我知道我是否可以使用 AFNetworking 做到这一点。

4

3 回答 3

2

您应该使用 SDWebImage 而不是下载它将缓存的图像,并且您也可以自定义该缓存选项。

我正在使用这个 SDWebImage 在 UICollectionview 和 UITableview 中缓存 150 +图像,并且它的工作完美。

最初我们需要添加一个占位符,然后它会一一出现。

执行

1.取出SDWebImage代码 SDWebImage

2.将头文件导入您的视图控制器

#import <SDWebImage/UIImageView+WebCache.h>

3.然后在 cellforrowindex() 方法中添加一行代码。我会给你示例代码快照

 // Here we use the new provided setImageWithURL: method to load the web image
    [cell.imageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"]
                   placeholderImage:[UIImage imageNamed:@"placeholder.png"]]; 
于 2013-12-24T20:25:19.743 回答
1

试试APSmartStorage。您可以管理存储在内存中的图像数量。如果出现“内存警告”,图像将从内存中删除。但无论如何都可以,因为所有图像都存储在文件中,因此您无需从网络重新加载它们。

于 2014-02-13T09:47:00.793 回答
0

正如@Aklesh Rathaur在评论中提到的那样,您可以尝试SDWebImage,Facebook 也在他们的移动应用程序上使用它。

当需要更多内存时,它在缓存和释放内存方面做得很好。引用SDWebImage 如何比 X 更好?

另一方面,SDWebImage 将 UIImage 表示缓存在内存中,并将原始压缩(但解码)图像文件存储在磁盘上。UIImage 使用 NSCache 按原样存储在内存中,因此不涉及复制,并且在您的应用程序或系统需要时立即释放内存。

让我们知道您的结果:-)

于 2013-12-24T20:05:49.890 回答