iOS版 - 不收集查看保存在内存中的每一个细胞?

问题描述 投票:0回答:1

我有6种不同类型的细胞的垂直集合视图...我观察到,因为我滚动和新讯息从服务器被获取,(我使用的寻呼机构(我由20取20) )应用程序与日志Message from debugger: Terminated due to memory issue崩溃

我也注意到,这种情况发生时,有超过1 GB的RAM分配,因为有在任何时候提出关于三个职位是疯了...当400多个职位被取出发生!

我想那一刻细胞是拿出来看,集合视图解除分配。那正确吗?所以,如果一个小区有一个形象,我下载/缓存当它即将被提出,然后是电池是不可见的了,因为我滚动,则图像不应该在内存中。对?

编辑1:

我在代码正在做,是在willDisplay cell检查,如果这是将要显示的细胞,是最后一个。如果是,那么我向服务器请求给我的下一个20个职位,如果有的话。如果是这样,我追加新职位的职位阵列。在那之后我只是重装集合视图。

编辑2:

我使用的是PFImageViewParse SDK作为缓存机制

swift uicollectionview out-of-memory
1个回答
1
投票

不,他们被重用。

图像可以是在缓存中,这可能是什么原因造成的巨大的内存使用情况。他们应该从内存中删除必要的时候,如果你想从头开始实现这一点,你可以在搜索NSCache

我建议使用SDWebImage或翠鸟有效地下载和缓存图像。

收集意见采用视图回收计划,以提高工作效率。如视图中移动屏幕外,它们是从视图中移除,并放置在复用队列,而不是被删除。由于新的内容被滚动屏幕,视图被从队列中除去,并用新的内容改变用途。

文档:https://developer.apple.com/library/archive/documentation/WindowsViews/Conceptual/CollectionViewPGforIOS/CollectionViewBasics/CollectionViewBasics.html

© www.soinside.com 2019 - 2024. All rights reserved.