《Objective-c》-(内存管理之四:autorelease自动释放池)
内存管理之四——autorelease自动释放池
1.autorelease的基本使用
-
此对象方法会将对象放到一个自动释放池内;
-
当自动释放池被销毁时,就会对池子内的所有对象做一次release操作;
-
此方法会返回对象本身;
-
调用完此方法后,对象计数器的值不变,只有到自动释放池被销毁时才会对对象做一次release操作;
2.autorelease的好处
-
不用在关心对象被销毁的时间;
-
不用关心什么时候调用release操作;
3.autorelease的使用注意
-
占用内存较大的对象不要随便使用autorelease;
-
占用内存较小的对象使用autorelease没有太大的影响;
4.错误写法:野指针错误
-
调用alloc后调用了autorelease,后面又调用了release;
-
连续多次调用autorelease;
5.自动释放池细节说明
-
在iOS程序运行过程中,会创建无数个池子,这些池子都是以栈结构存在(先进后出);
-
当一个对象调用autorelease方法后,会将这个对象放到栈顶的释放池;
6.autorelease的其他使用
-
系统自带的方法里面没有包含alloc、new、copy,说明返回的对象都是autorelease的;
-
开发中经常会提供一些类方法,快速创建一个已经autorelease过的对象:
7.自动释放池的创建
-
iOS5.0以前
-
iOS5.0开始