iOS开发:UITableView加载多张照片导致内存上涨的问题

转载 2016年05月31日 10:23:47

本文出处刚刚在线:http://www.superqq.com/blog/2014/11/06/ioskai-fa-:uitableviewjia-zai-duo-zhang-zhao-pian-dao-zhi-nei-cun-shang-zhang-de-wen-ti/

最近在写一个文件管理的页面,里面功能挺多的,有缩略图下载(socket),有文件下载(http)。

说说缩略图下载这一块,我的UITableView的一个cell要加载四张缩略图,iPhone5s的屏幕能加载8行。大概UI上是这样布局的。(另外缩略图需要一张张下载)

刚开始进到文件管理界面,内存占用20几M,随着缩略图不断下载下来内存在上涨,我不断的往上拉,内存一值在涨。达到一定值app出现闪退。大概是300多M的时候闪退。什么原因造成的呢?
先看下图:
这里写图片描述
我是这样写的:建立一个对象,这个对象有一个属性是UIImage。对象保存在数组里面。大概有800多张照片。

当缩略图没有下载下来的时候,我加载的是一张默认图片。当缩略图下载下来的时候,我就把下载下来的缩略图赋给相应对象的UIImage属性。

cell是重用的,这样看应该是没有什么问题的。但是内存就是不断上涨,而且是不动的时候,内存不涨,上下滑动UITableView,内存不断上涨。

我一直在思考cell是重用的,内存怎么会不断上涨呢?问题不是cell引起的,而是上面我说的那个对象的UIImage属性引起的。

思考一下,缩略图不断下载下来, 下载下来的缩略图都赋给对象的UIImage属性,而对象又在数组里面,可想而知,800多张缩略图不断下载内存肯定上涨。

于是,我去掉对象的UIImage属性,把下载下来的照片通过EGOCache缓存起来,加载cell上的UIImage的时候,直接从缓存里面取出来就可以了。

代码如下:

[[EGOCache globalCache] setImage:image forKey:[NSString stringWithFormat:@"EGOImageLoader-%lu", (unsigned long)[[fmObject.path description] hash]] withTimeoutInterval:CacheingTime];

再次运行起来,看一下内存这一块:
这里写图片描述

相关文章推荐

iOS开发:UITableView加载多张照片导致内存上涨的问题

说说缩略图下载这一块,我的UITableView的一个cell要加载四张缩略图,iPhone5s的屏幕能加载8行。大概UI上是这样布局的。...
  • conslee
  • conslee
  • 2014年11月06日 10:11
  • 1858

ios开发遇到的memory持续上涨导致页面crash解决思路总结

我在IOS遇到过的闪退主要分为程序启动完Lanch page在初始化页面就崩溃,和在程序运行中crash两种;        后者我遇到的情况是memory占用过多,被系统kill掉了一部分正在占...

IOS开发UI展示之UITableView ──分页加载更多

在ios开中中,由于屏幕尺寸限制,如果需要显示的数据很多,需要用到分页加载。 原理:先数据放到一个table中,先显示10条,table底部有一察看更多选项,点击察看更多查看解析的剩余数据。基本上就...

IOS开发UI展示之UITableView ──分页加载更多

在ios开中中,由于屏幕尺寸限制,如果需要显示的数据很多,需要用到分页加载。 原理:先数据放到一个table中,先显示10条,table底部有一察看更多选项,点击察看更多查看解析的剩余数据。基本上就...
  • topbar
  • topbar
  • 2013年11月09日 16:49
  • 1498

iOS开发UI篇—在UItableview中实现加载更多功能

一、实现效果 点击加载更多按钮,出现一个加载图示,三秒钟后添加两条新的数据。                        二、实现代码和说明 当在页面(视图部分...

IOS开发UI展示之UITableView ──分页加载

在ios开中中,由于屏幕尺寸限制,如果需要显示的数据很多,需要用到分页加载。 原理:先数据放到一个table中,先显示10条,table底部有一察看更多选项,点击察看更多查看解析的剩余数据。基本上就...

iOS开发UI基础—30在UItableview中实现加载更多功能

一、实现效果 点击加载更多按钮,出现一个加载图示,三秒钟后添加两条新的数据。                        二、实现代码和说明 当在页面(视图部分)点击加载更多按钮的...

Protobuf使用不当导致的程序内存上涨问题

protocol buffers[1]是google提供的一种将结构化数据进行序列化和反序列化的方法,其优点是语言中立,平台中立,可扩展性好,目前在google内部大量用于数据存储,通讯协议等方面。P...

IOS开发的小软件,加载积分墙

  • 2014年10月16日 10:03
  • 2.74MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS开发:UITableView加载多张照片导致内存上涨的问题
举报原因:
原因补充:

(最多只允许输入30个字)