文档章节

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
iOS之Cell工厂解决多种cell的困扰

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

-Man
2016/05/05
170
0
一款滑动删除cell动画

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

阴雨音语
2016/06/25
17
0
UITableViewcell返回高度

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

llcay
2015/07/21
420
0

没有更多内容

加载失败,请刷新页面

加载更多

OSX | SafariBookmarksSyncAgent意外退出解决方法

1. 启动系统, 按住⌘-R不松手2. 在实用工具(Utilities)下打开终端,输入csrutil disable, 然后回车; 你就看到提示系统完整性保护(SIP: System Integrity Protection)已禁用3. 输入reboot回车...

云迹
今天
3
0
面向对象类之间的关系

面向对象类之间的关系:is-a、has-a、use-a is-a关系也叫继承或泛化,比如大雁和鸟类之间的关系就是继承。 has-a关系称为关联关系,例如企鹅在气候寒冷的地方生活,“企鹅”和“气候”就是关...

gackey
今天
4
0
读书(附电子书)|小狗钱钱之白色的拉布拉多

关注公众号,在公众号中回复“小狗钱钱”可免费获得电子书。 一、背景 之前写了一篇文章 《小狗钱钱》 理财小白应该读的一本书,那时候我才看那本书,现在看了一大半了,发现这本书确实不错,...

tiankonguse
今天
4
0
Permissions 0777 for ‘***’ are too open

异常显示: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ......

李玉长
今天
5
0
区块链10年了,还未落地,它失败了吗?

导读 几乎每个人,甚至是对通证持怀疑态度的人,都对区块链的技术有积极的看法,因为它有可能改变世界。然而,区块链技术问世已经10年了,我们仍然没有真正的用上区块链技术。 几乎每个人,甚...

问题终结者
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部