如何使用'PFImageView'优化内存?

时间:2014-03-19 04:52:35

标签: ios objective-c image memory parse-platform

我对内存利用率很困惑。加载各种图像(从Parse.com检索)后,我的应用程序崩溃。

为了使这个更简单,我的应用程序包括显示某些类别的图像,所以这就是我所拥有的: 首先,您将看到一个' PFQueryTableView'你选择一个'单元'并被推送到ScrollView'载有10&#PFImageView'当然,在浏览了5个之前单元格的图像后,我的应用程序因内存压力或内存错误而崩溃。

我使用以下代码,我认为该代码应该有助于缓存数据,而不是在设备上下载:

- (PFQuery *)queryForTable{

PFQuery *query = [PFQuery queryWithClassName:self.parseClassName];
query.cachePolicy = kPFCachePolicyNetworkOnly;

return query;

由于内存不断上升所以我不会做任何事情所以我尝试添加自定义缓存设置:

- (void)viewDidUnload
{
[super viewDidUnload];

[PFQuery clearAllCachedResults];
}

删除任何数据..查看后。但是,当我测试应用程序时,所使用的内存只是在每个单元格上升时保持上升,直到达到大约550 MB然后崩溃...

我也试过发布我的PFImageViews但是因为我使用ARC而且它应该自动执行。 所以我的问题是,我错过了什么吗?如何在不占用设备大量内存的情况下为要查看的图像设置它?

任何帮助将不胜感激!谢谢你有时间阅读,如果这是一个基本问题,我道歉。

2 个答案:

答案 0 :(得分:2)

发布iOS6后,不推荐使用viewDidUnload。文档说"视图不再在低内存条件下被清除,因此这种方法永远不会被调用" - 如果有一个断点,我会感到惊讶。

您是否可以明确设置nil任何不再需要的对象,并启用该内存回收?

您可能希望切换到持续旋转UIScrollView方案。在任何时候你只加载了三个图像;前一个,当前和下一个。

如果向左滑动,"向左滑动"成为"当前","当前"成为"对","对"被丢弃,你加载一个新的"左"。

如果向右滑动,"对等"成为"当前","当前"成为"左","左"被丢弃,你加载一个新的"权利"。

这里是old answer我写的关于制作循环视图控制器的详细信息。

答案 1 :(得分:0)

kPFCachePolicyNetworkOnly意味着你所追求的相反。这意味着应用程序永远不应该使用缓存来查询结果,但始终使用网络下载图像。因此,如果您已经在之前的尝试中获取了图像,它现在仍会再次下载图像。

要实现您的意思,请使用kPFCachePolicyCacheThenNetwork。这将强制应用程序首先检查缓存,然后仅在缓存中找不到时才从解析中获取缓存。

这个设置是为了减少网络使用,而不是内存,所以我怀疑它会对你的内存问题做多少。

如果您仍然遇到内存问题,请考虑使用缩小版本的图片进行浏览,或者实现基于PageViewController的浏览器。