文档章节

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

JlongTian
 JlongTian
发布于 2016/01/04 13:18
字数 420
阅读 274
收藏 0

1.引用计数器的概念

  • 每个OC对象都有自己的引用计数器,是一个整数,表示“对象被引用的次数”,即有多少人正在使用这个OC对象

  • 每个OC对象内部专门有4个字节的存储空间来存储引用计数器

2.引用计数器的作用

  •  当使用allocnew或者copy创建一个新对象时,新对象的引用计数器默认就是1

  •  当一个对象的引用计数器值为0时,对象占用的内存就会被系统回收。换句话说,如果对象的计数器不为0,那么在整个程序运行过程,它占用的内存就不可能被回收,除非整个程序已经退出

3.引用计数器的操作

  •    给对象发送一条retain消息,可以使引用计数器值+1retain方法返回对象本身)

  •    可以给对象发送retainCount消息获得当前的引用计数器值

4.对象的销毁

  •  当一个对象的引用计数器值为0时,那么它将被销毁,其占用的内存被系统回收

  •    当一个对象被销毁时,系统会自动向对象发送一条dealloc消息

  • 一般会重写dealloc方法,在这里释放相关资源,dealloc就像对象的遗言

  • 一旦重写了dealloc方法,就必须调用[super dealloc],并且放在最后面调用(ARC重写无需调用)

  •    一旦对象被回收了,它占用的内存就不再可用,坚持使用会导致程序崩溃(野指针错误)


© 著作权归作者所有

上一篇: EXC_BAD_ACCESS错误
下一篇: OC的内存分配
JlongTian
粉丝 3
博文 310
码字总数 151017
作品 0
深圳
程序员
私信 提问
iOS 简单而粗暴的说一说内存管理

简介: 既然是内存管理,首先要知道那么内存是用来干什么的?内存具体管理的东西是什么?当然这些东西基本都是常识了,内存当然是用来存储数据的,内存要管理的东西简单的说也就是如何将数据存...

吃粑粑的毕教授
2017/09/30
0
0
OC 内存管理-----MRC(手动释放内存)

IOS的内存管理 1.再IOS中对于每一个对象都会有一个对象计数器 2.IOS内存管理分为三种(MRC:手动释放内存 autorelaese:自动释放内存 ARC:自动引用计数) (1)MRC 黄金法则: 一旦对象被创建(new...

尘埃眠于光年yr
2015/10/16
122
0
iOS中的内存管理(上)

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

傲风凌寒
2014/05/20
564
0
03 - Object-C内存管理

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

口十耳
2015/12/29
18
0
OC中的内存管理(MRC)-单个对象

OC中只要继承了NSObject的,都要进行内存管理;在谈单个对象内存管理的时候需要明白几个概念。 第一个:计数器;新建一个对象,计数器就为1,使用retain,计数器就加一,使用release,计数器...

AppleDream
2016/03/29
13
0

没有更多内容

加载失败,请刷新页面

加载更多

PhotoShop 色调:理解直方图/RGB通道信息

一、直方图:图表的形式,展示图像像素分布的情况 1.平均值:表示平均亮度 2.标准偏差值:表示亮度值范围内的中间值 3.像素: 表示用于计算直方图的像素总数 4.色阶:显示指针下面的区域亮度...

东方墨天
11分钟前
4
0
wildfly(JBoss AS)应用服务器快速入门

什么是wildfly JBoss AS 从8版本起名为wildfly。Wildfly是一个开源的基于JavaEE的轻量级应用服务器。可以在任何商业应用中免费使用。 WildFly是一个灵活的、轻量的、强大管理能力的应用程序服...

程序新视界
35分钟前
2
0
Java集合类常见面试知识点总结

Java集合类学习总结 这篇总结是基于之前博客内容的一个整理和回顾。 这里先简单地总结一下,更多详细内容请参考我的专栏:深入浅出Java核心技术 https://blog.csdn.net/column/details/21930...

Java技术江湖
38分钟前
6
0
怎么用for循环打出爱心

先上效果图: 这是用*组成的爱心,下面讲讲思路: 首先这个图形可以拆分成三部分:第一部分是上面三行的两个梯形,第二部分是中间三行的长方形,第三部分是最下面的倒三角形。 其实图形拆分好...

INEVITABLE
44分钟前
4
0
用HttpUrlConnection伪造成HttpClient

https://www.jianshu.com/p/27ad06cc39d2

shzwork
50分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部