OC----内存管理的分类
程序员文章站
2024-01-14 22:24:34
...
2.1 MRC: Manual Reference Counting 手动引用计数.手动内存管理.
当多1个人使用对象的时候,要求程序员手动的发送retain消息.少1个人使用的时候程序员手动的发送relase消息.
2.2 ARC: Automatic Reference Counting 自动引用计数.自动内存管理.(2011年之前 iOS5之前.)
系统自动的在合适的地方发送retain relase消息.
2.3 学习MRC的理由:
a) 面试必考 100%
b) 早期的APP开发使用的MRC技术.
c) iOS大牛都是从MRC成长起来的. 方便交流.
d) ARC是基于MRC
2.4 iOS5开始. Xcode4.2开始就支持ARC
Xcode7 默认支持ARC开发.
默认使用的开发方式就是ARC的模式. 关闭ARC开启MRC. (选择项目 -> all -> apple LLVM language Object C -> ARC-‘NO’)
2.5. 当对象的引用计数器变为0的时候,系统会自动回收对象.
在系统回收对象的时候.会自动的调用对象的dealloc方法.
重写dealloc方法的规范:
必须要调用父类的dealloc方法. 并且要放在最后一句代码. [super dealloc]
原因:子类中有父类的属性,而父类属性的release 是放在父类的dealloc方法之中,为了释放所有对象,要调用父类dealloc 方法
2.6 测试引用计数器.
1. 新创建1个对象,这个对象的引用计数器的值默认是1.
2. 当对象的引用计数器变为0的时候.对象就会被系统立即回收 并自动调用dealloc方法.
3. 为对象发送retain消息 对象的引用计数器就会+1
2.7 为对象发送release消息.并不是回收对象.而是让对象的引用计数器-1
当对象的引用计数器的值变为0的时候.对象才会被系统立即回收.