文档章节

OC的cell回收重利用问题

黑白大熊猫
 黑白大熊猫
发布于 2015/02/07 15:49
字数 1151
阅读 8
收藏 0
点赞 0
评论 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
太原
程序员
2.OC入门实例

OC类的入门例子: (1)创建类头文件YtsStudent.h #import <Foundation/Foundation.h> //注:使用#import可以保证文件不被重复引入,所以一般不使用#include。 @interface YtsStudent : NSObje...

海风OSCHINA ⋅ 2013/12/28 ⋅ 0

iOS之Cell工厂解决多种cell的困扰

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

-Man ⋅ 2016/05/05 ⋅ 0

UITableViewcell返回高度

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

llcay ⋅ 2015/07/21 ⋅ 0

iOS 理解引用计数

一 简介 OC 语言使用引用计数来管理内存每个对象都有个可以递增或递减的计数器,如果想某个对象继续存活,那就递增其引用计数,用完之后,就递减其计数,计数变为0,就销毁。 二 引用计数工作...

卧龙小 ⋅ 2015/08/04 ⋅ 0

一款滑动删除cell动画

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

阴雨音语 ⋅ 2016/06/25 ⋅ 0

Swift教程17-淡化MVC,使用MVVM框架开发轻巧便于维护的iOS app

Swift教程17-淡化MVC,使用MVVM框架开发轻巧便于维护的iOS/android app MVVM是微软提出一种移动开发框架,旨在针对传统的MVC框架,解决传统的MVC框架的控制器的臃肿问题. M: Model模型,也就是数...

法斗斗 ⋅ 2015/09/25 ⋅ 0

03 - Object-C内存管理

1、基本原理 1.1、 什么是内存管理 移动设备的内存极其有限,每个app所能占用的内存是有限制的 当app所占用的内存较多时,系统会发出内存警告,这时得回收一些不需要再使用的内存空间。比如回...

口十耳 ⋅ 2015/12/29 ⋅ 0

教你爱上Blocks(闭包)

Blocks是C语言的扩充功能:带有自动变量(局部变量)的匿名函数。通过Blocks,源代码中就能使用匿名函数,即不带名称的函数。在我们的工作中,命名占据了很大一部分,函数名,变量名,属性名...

芳仔小脚丫 ⋅ 2014/09/23 ⋅ 16

iOS中的内存管理(上)

下列行为都会增加一个app的内存占用: 1、创建一个OC对象; 2、定义一个变量; 3、调用一个函数或者方法。 如果app占用内存过大,系统可能会强制关闭app,造成闪退现象,影响用户体验。如何让...

傲风凌寒 ⋅ 2014/05/20 ⋅ 0

OC对象的retainCount(引用计数器)

1.引用计数器的概念 每个OC对象都有自己的引用计数器,是一个整数,表示“对象被引用的次数”,即有多少人正在使用这个OC对象 每个OC对象内部专门有4个字节的存储空间来存储引用计数器 2.引用...

JlongTian ⋅ 2016/01/04 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

个人博客的运营模式能否学习TMALL天猫质量为上?

心情随笔|个人博客的运营模式能否学习TMALL天猫质量为上? 中国的互联网已经发展了很多年了,记得在十年前,个人博客十分流行,大量的人都在写博客,而且质量还不错,很多高质量的文章都是在...

原创小博客 ⋅ 今天 ⋅ 0

JavaScript零基础入门——(十一)JavaScript的DOM操作

JavaScript零基础入门——(十一)JavaScript的DOM操作 大家好,欢迎回到我们的JavaScript零基础入门。最近有些同学问我说,我讲的的比书上的精简不少。其实呢,我主要讲的是我在开发中经常会...

JandenMa ⋅ 今天 ⋅ 0

volatile和synchronized的区别

volatile和synchronized的区别 在讲这个之前需要先了解下JMM(Java memory Model :java内存模型):并发过程中如何处理可见性、原子性、有序性的问题--建立JMM模型 详情请看:https://baike.b...

MarinJ_Shao ⋅ 今天 ⋅ 0

深入分析Kubernetes Critical Pod(一)

Author: xidianwangtao@gmail.com 摘要:大家在部署Kubernetes集群AddOn组件的时候,经常会看到Annotation scheduler.alpha.kubernetes.io/critical-pod"="",以表示这是一个关键服务,那你知...

WaltonWang ⋅ 今天 ⋅ 0

原子性 - synchronized关键词

原子性概念 原子性提供了程序的互斥操作,同一时刻只能有一个线程能对某块代码进行操作。 原子性的实现方式 在jdk中,原子性的实现方式主要分为: synchronized:关键词,它依赖于JVM,保证了同...

dotleo ⋅ 今天 ⋅ 0

【2018.06.22学习笔记】【linux高级知识 14.4-15.3】

14.4 exportfs命令 14.5 NFS客户端问题 15.1 FTP介绍 15.2/15.3 使用vsftpd搭建ftp

lgsxp ⋅ 今天 ⋅ 0

JeeSite 4.0 功能权限管理基础(Shiro)

Shiro是Apache的一个开源框架,是一个权限管理的框架,实现用户认证、用户授权等。 只要有用户参与一般都要有权限管理,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户...

ThinkGem ⋅ 昨天 ⋅ 0

python f-string 字符串格式化

主要内容 从Python 3.6开始,f-string是格式化字符串的一种很好的新方法。与其他格式化方式相比,它们不仅更易读,更简洁,不易出错,而且速度更快! 在本文的最后,您将了解如何以及为什么今...

阿豪boy ⋅ 昨天 ⋅ 0

Python实现自动登录站点

如果我们想要实现自动登录,那么我们就需要能够驱动浏览器(比如谷歌浏览器)来实现操作,ChromeDriver 刚好能够帮助我们这一点(非谷歌浏览器的驱动有所不同)。 一、确认软件版本 首先我们...

blackfoxya ⋅ 昨天 ⋅ 0

线性回归原理和实现基本认识

一:介绍 定义:线性回归在假设特证满足线性关系,根据给定的训练数据训练一个模型,并用此模型进行预测。为了了解这个定义,我们先举个简单的例子;我们假设一个线性方程 Y=2x+1, x变量为商...

wangxuwei ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部