OC的cell提供了一个从队列取出使用过的cell重复利用的函数html
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"1"];函数
经过这个函数能够取出被回收的cell,反复利用,从而在界面拉动的时候节约内存(tableview的cell会在界面可视范围内对看不见的cell进行回收,不是销毁)。工具
可是今天我测试时候故意不从队列取,而是写 UITableViewCell * cell=[[UITableViewCell alloc] init];测试
,而后观察左边内存变化状况,发如今table拉动的时候并无增长内存。这是怎么回事,而后我又把celll内存打印了一下优化
NSLog(@"%p",cell); spa
结果以下:code
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的存取进行了内存优化,即便不从队列里面拿去也不会占用更多内存使用,目前发现是这样,可是建议仍是继续用htm
dequeueReusableCellWithIdentifier 函数,让程序更可靠。队列