OC的cell回收重利用问题

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 函数,让程序更可靠。

转载于:https://my.oschina.net/u/583655/blog/376390

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值