文档章节

OC的cell回收重利用问题

黑白大熊猫
 黑白大熊猫
发布于 2015/02/07 15:49
字数 1151
阅读 8
收藏 0

OC的cell提供了一个从队列取出使用过的cell重复利用的函数


UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"1"];

通过这个函数可以取出被回收的cell,反复利用,从而在界面拉动的时候节约内存(tableview的cell会在界面可视范围内对看不见的cell进行回收,不是销毁)。


但是今天我测试时候故意不从队列取,而是写  UITableViewCell *  cell=[[UITableViewCell alloc] init];

,然后观察左边内存变化情况,发现在table拉动的时候并没有增加内存。这是怎么回事,然后我又把celll内存打印了一下

 NSLog(@"%p",cell);   

结果如下:

2015-02-07 15:32:57.922 Hello[3901:117856] 0x78879070
2015-02-07 15:32:57.924 Hello[3901:117856] 0x7887b340
2015-02-07 15:32:57.925 Hello[3901:117856] 0x7887ee20
2015-02-07 15:33:02.210 Hello[3901:117856] 0x78e68c10
2015-02-07 15:33:02.744 Hello[3901:117856] 0x78e68e00
2015-02-07 15:33:09.698 Hello[3901:117856] 0x78e68f90
2015-02-07 15:33:13.476 Hello[3901:117856] 0x78879070
2015-02-07 15:33:17.094 Hello[3901:117856] 0x787792e0
2015-02-07 15:33:19.109 Hello[3901:117856] 0x78782a50
2015-02-07 15:33:20.907 Hello[3901:117856] 0x7887a500
2015-02-07 15:33:28.241 Hello[3901:117856] 0x7876e060
2015-02-07 15:33:28.491 Hello[3901:117856] 0x78782f10
2015-02-07 15:33:28.741 Hello[3901:117856] 0x78dc81f0
2015-02-07 15:33:29.080 Hello[3901:117856] 0x78dc92d0
2015-02-07 15:33:29.291 Hello[3901:117856] 0x78dc8ee0
2015-02-07 15:33:29.591 Hello[3901:117856] 0x78dcb8b0
2015-02-07 15:33:29.757 Hello[3901:117856] 0x78782a50
2015-02-07 15:33:31.131 Hello[3901:117856] 0x7887f440
2015-02-07 15:33:31.209 Hello[3901:117856] 0x78782a50
2015-02-07 15:33:31.275 Hello[3901:117856] 0x78786f70
2015-02-07 15:33:31.359 Hello[3901:117856] 0x7887a500
2015-02-07 15:33:31.443 Hello[3901:117856] 0x7887f440
2015-02-07 15:33:31.591 Hello[3901:117856] 0x78dc81f0
2015-02-07 15:33:31.826 Hello[3901:117856] 0x78786f70
2015-02-07 15:33:32.524 Hello[3901:117856] 0x78879070
2015-02-07 15:33:32.758 Hello[3901:117856] 0x7887bbe0
2015-02-07 15:33:32.952 Hello[3901:117856] 0x78e67060
2015-02-07 15:33:33.091 Hello[3901:117856] 0x7887f440
2015-02-07 15:33:33.274 Hello[3901:117856] 0x78786f70
2015-02-07 15:33:33.542 Hello[3901:117856] 0x78879070
2015-02-07 15:33:33.982 Hello[3901:117856] 0x78dc81f0
2015-02-07 15:33:34.124 Hello[3901:117856] 0x78dc8ee0
2015-02-07 15:33:34.275 Hello[3901:117856] 0x78e67060
2015-02-07 15:33:34.502 Hello[3901:117856] 0x78782820
2015-02-07 15:33:34.674 Hello[3901:117856] 0x78e67e20
2015-02-07 15:33:34.775 Hello[3901:117856] 0x78e6c3c0
2015-02-07 15:33:35.692 Hello[3901:117856] 0x78dc81f0
2015-02-07 15:33:35.842 Hello[3901:117856] 0x78879070
2015-02-07 15:33:36.042 Hello[3901:117856] 0x78dc8ee0
2015-02-07 15:33:36.325 Hello[3901:117856] 0x78e67060
2015-02-07 15:33:36.476 Hello[3901:117856] 0x78dc81f0
2015-02-07 15:33:36.642 Hello[3901:117856] 0x78879070
2015-02-07 15:33:36.891 Hello[3901:117856] 0x78dc8ee0
2015-02-07 15:33:39.724 Hello[3901:117856] 0x78e67060
2015-02-07 15:33:40.108 Hello[3901:117856] 0x78e67e20
2015-02-07 15:33:40.375 Hello[3901:117856] 0x78dcabb0
2015-02-07 15:33:40.474 Hello[3901:117856] 0x78e6c440
2015-02-07 15:33:40.557 Hello[3901:117856] 0x78782820
2015-02-07 15:33:40.691 Hello[3901:117856] 0x7866bfe0
2015-02-07 15:33:40.974 Hello[3901:117856] 0x78879070
2015-02-07 15:33:41.606 Hello[3901:117856] 0x78782820
2015-02-07 15:33:42.258 Hello[3901:117856] 0x78782820
2015-02-07 15:33:42.443 Hello[3901:117856] 0x78e67060
2015-02-07 15:33:42.527 Hello[3901:117856] 0x78786f70
2015-02-07 15:33:42.610 Hello[3901:117856] 0x78dc81f0
2015-02-07 15:33:42.711 Hello[3901:117856] 0x78879070
2015-02-07 15:33:42.844 Hello[3901:117856] 0x78e67060
2015-02-07 15:33:43.010 Hello[3901:117856] 0x78e67e20
2015-02-07 15:33:43.277 Hello[3901:117856] 0x7887f440
2015-02-07 15:33:44.261 Hello[3901:117856] 0x78e6c3c0
2015-02-07 15:33:44.346 Hello[3901:117856] 0x78782820
2015-02-07 15:33:44.411 Hello[3901:117856] 0x78786f70
2015-02-07 15:33:44.513 Hello[3901:117856] 0x78782a50
2015-02-07 15:33:44.613 Hello[3901:117856] 0x787872f0
2015-02-07 15:33:44.762 Hello[3901:117856] 0x78879070
2015-02-07 15:33:44.946 Hello[3901:117856] 0x78782820
2015-02-07 15:33:45.960 Hello[3901:117856] 0x7887f440
2015-02-07 15:33:46.277 Hello[3901:117856] 0x78dc81f0
2015-02-07 15:33:46.377 Hello[3901:117856] 0x78782820
2015-02-07 15:33:46.477 Hello[3901:117856] 0x78879070
2015-02-07 15:33:46.610 Hello[3901:117856] 0x78dbd8c0
2015-02-07 15:33:46.793 Hello[3901:117856] 0x78dc81f0
2015-02-07 15:33:47.060 Hello[3901:117856] 0x78e67060
2015-02-07 15:33:47.443 Hello[3901:117856] 0x78879070
2015-02-07 15:33:47.510 Hello[3901:117856] 0x78782820
2015-02-07 15:33:47.576 Hello[3901:117856] 0x78dc81f0
2015-02-07 15:33:47.677 Hello[3901:117856] 0x78dbd8c0
2015-02-07 15:33:47.810 Hello[3901:117856] 0x787872f0
2015-02-07 15:33:47.993 Hello[3901:117856] 0x78e67060
2015-02-07 15:33:48.894 Hello[3901:117856] 0x78dc81f0
2015-02-07 15:33:48.993 Hello[3901:117856] 0x78dc8fc0
2015-02-07 15:33:49.161 Hello[3901:117856] 0x78782820
2015-02-07 15:33:49.378 Hello[3901:117856] 0x78dbd8c0
2015-02-07 15:33:49.794 Hello[3901:117856] 0x78e67060
2015-02-07 15:33:50.620 Hello[3901:117856] 0x78879070
2015-02-07 15:33:50.711 Hello[3901:117856] 0x78dc81f0
2015-02-07 15:33:50.794 Hello[3901:117856] 0x78e67060
2015-02-07 15:33:50.894 Hello[3901:117856] 0x78e67e20
2015-02-07 15:33:51.027 Hello[3901:117856] 0x78879070

用工具查找其中几个地址就会发现有重复的,说明OC已经对这个cell的存取进行了内存优化,即使不从队列里面拿去也不会占用更多内存使用,目前发现是这样,但是建议还是继续用

dequeueReusableCellWithIdentifier 函数,让程序更可靠

© 著作权归作者所有

共有 人打赏支持
黑白大熊猫
粉丝 3
博文 18
码字总数 2023
作品 0
太原
程序员
私信 提问
UICollectionView(I)

UICollectionView 与 UITableView的异同 相同点: 不同点: ① 动过代理和数据源方法来实现UI和数据填充的; ② 对Cell的重利用,实现了循环利用优化; 不同点: ① UITableView是系统自定义...

Harely
08/02
0
0
iOS Swift4项目EFarm学习和总结

Swift项目 先上一个码云地址码云地址 项目的简单介绍 项目编写过程和一些知识点 这个项目从Xcode的singleView模板创建而来, 经过文件整理归类和修改创建了一个标准易于维护的最终模板, 你可以...

iShown
2017/09/22
0
0
一款滑动删除cell动画

tableView显示出cell之后. 使用方法(满足上面条件): 1.定义全局属性

阴雨音语
2016/06/25
17
0
iOS之Cell工厂解决多种cell的困扰

在开发过程中经常遇到tabView中包含多种样式的cell,这里介绍一种cell工厂模式 下面示例中含有示图的三种cell 1. 创建model基类BaseModel 和子类 OneModel TwoModel ThreeModel 在BaseModel 中...

-Man
2016/05/05
170
0
UITableViewcell返回高度

实现上面图片的效果时,cell返回的高度该怎么设置?因为cell的布局不完全一致,我自定义了两种cell,在返回高度时要找到是哪一种cell,点击圆圈里的按钮,会显示收藏,再点击就回收,但是在返...

llcay
2015/07/21
440
0

没有更多内容

加载失败,请刷新页面

加载更多

js垃圾回收机制和引起内存泄漏的操作

JS的垃圾回收机制了解吗? Js具有自动垃圾回收机制。垃圾收集器会按照固定的时间间隔周期性的执行。 JS中最常见的垃圾回收方式是标记清除。 工作原理:是当变量进入环境时,将这个变量标记为“...

Jack088
23分钟前
2
0
大数据教程(10.1)倒排索引建立

前面博主介绍了sql中join功能的大数据实现,本节将继续为小伙伴们分享倒排索引的建立。 一、需求 在很多项目中,我们需要对我们的文档建立索引(如:论坛帖子);我们需要记录某个词在各个文...

em_aaron
39分钟前
2
0
"errcode": 41001, "errmsg": "access_token missing hint: [w.ILza05728877!]"

Postman获取微信小程序码的时候报错, errcode: 41001, errmsg: access_token missing hint 查看小程序开发api指南,原来access_token是直接当作parameter的(写在url之后),scene参数一定要...

两广总督bogang
40分钟前
7
0
MYSQL索引

索引的作用 索引类似书籍目录,查找数据,先查找目录,定位页码 性能影响 索引能大大减少查询数据时需要扫描的数据量,提高查询速度, 避免排序和使用临时表 将随机I/O变顺序I/O 降低写速度,占用磁...

关元
58分钟前
7
0
撬动世界的支点——《引爆点》读书笔记2900字优秀范文

撬动世界的支点——《引爆点》读书笔记2900字优秀范文: 作者:挽弓如月。因为加入火种协会的读书活动,最近我连续阅读了两本论述流行的大作,格拉德威尔的《引爆点》和乔纳伯杰的《疯传》。...

原创小博客
今天
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部