我有6种不同类型的细胞的垂直集合视图...我观察到,因为我滚动和新讯息从服务器被获取,(我使用的寻呼机构(我由20取20) )应用程序与日志Message from debugger: Terminated due to memory issue
崩溃
我也注意到,这种情况发生时,有超过1 GB的RAM分配,因为有在任何时候提出关于三个职位是疯了...当400多个职位被取出发生!
我想那一刻细胞是拿出来看,集合视图解除分配。那正确吗?所以,如果一个小区有一个形象,我下载/缓存当它即将被提出,然后是电池是不可见的了,因为我滚动,则图像不应该在内存中。对?
编辑1:
我在代码正在做,是在willDisplay cell
检查,如果这是将要显示的细胞,是最后一个。如果是,那么我向服务器请求给我的下一个20个职位,如果有的话。如果是这样,我追加新职位的职位阵列。在那之后我只是重装集合视图。
编辑2:
我使用的是PFImageView
从Parse SDK
作为缓存机制
不,他们被重用。
图像可以是在缓存中,这可能是什么原因造成的巨大的内存使用情况。他们应该从内存中删除必要的时候,如果你想从头开始实现这一点,你可以在搜索NSCache
。
我建议使用SDWebImage或翠鸟有效地下载和缓存图像。
收集意见采用视图回收计划,以提高工作效率。如视图中移动屏幕外,它们是从视图中移除,并放置在复用队列,而不是被删除。由于新的内容被滚动屏幕,视图被从队列中除去,并用新的内容改变用途。