Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift iOS-集合视图是否保留内存中的每个单元格?_Swift_Uicollectionview_Out Of Memory - Fatal编程技术网

Swift iOS-集合视图是否保留内存中的每个单元格?

Swift iOS-集合视图是否保留内存中的每个单元格?,swift,uicollectionview,out-of-memory,Swift,Uicollectionview,Out Of Memory,我有一个垂直收集视图,有6种不同类型的单元格。。。我观察到,当我滚动并从服务器获取新帖子时,(我使用一种分页机制(我获取20乘20)),应用程序崩溃,调试器发出日志消息:由于内存问题而终止 我还注意到,当分配了超过1GB的RAM时,就会发生这种情况,这太疯狂了,因为在任何给定的时间都有大约三篇文章出现。。。当获取400多个帖子时就会发生这种情况 我假设当一个单元格不在视图中时,集合视图就会解除对它的分配。是这样吗?因此,如果一个单元格有一个图像,当它即将呈现时,我下载/缓存该图像,然后该单元格由

我有一个垂直收集视图,有6种不同类型的单元格。。。我观察到,当我滚动并从服务器获取新帖子时,(我使用一种分页机制(我获取20乘20)),应用程序崩溃,调试器发出日志
消息:由于内存问题而终止

我还注意到,当分配了超过1GB的RAM时,就会发生这种情况,这太疯狂了,因为在任何给定的时间都有大约三篇文章出现。。。当获取400多个帖子时就会发生这种情况

我假设当一个单元格不在视图中时,集合视图就会解除对它的分配。是这样吗?因此,如果一个单元格有一个图像,当它即将呈现时,我下载/缓存该图像,然后该单元格由于我滚动而不再可见,那么该图像不应该在内存中。对吧?

编辑1:

在代码中,我要做的是检查将要显示的单元格是否是最后一个。如果是的话,那么我会向服务器请求为我带来接下来的20篇文章,如果有的话。当它这样做时,我将把新帖子附加到posts数组中。之后,我只是重新加载集合视图

编辑2:

我正在使用
Parse SDK
中的
PFImageView
作为缓存机制

不,它们是重复使用的

图像可能在缓存中,这可能是导致内存大量使用的原因。必要时应将其从内存中删除,如果您想从头开始实现此功能,可以在
NSCache
上搜索

我建议使用SDWebImageKingfisher高效下载和缓存图像

集合视图采用视图回收计划来改进 效率当视图移到屏幕外时,它们将从视图中删除,并且 放置在重用队列中,而不是被删除。因为新内容是 在屏幕上滚动,视图将从队列中删除并重新调整用途 有了新的内容


文档:

它不会取消分配单元格,而是重复使用屏幕外的单元格,并在新单元格出现的地方显示。集合视图在这里不是一个问题,但是在没有看到任何代码的情况下,不可能知道是什么。您需要展示如何存储/缓存数据。感谢您的回答!请检查我编辑的问题…从
PFImageView
查看
.cachePolicy
。它在查询对象上没有任何相关属性。我没有缓存对象,只有带有
PFImageView
PFImageView对象的图像具有
.cachePolicy
属性,我真的认为你巨大的内存使用是由于没有释放图像。