1、autorelease的基本用法当对象执行autorelease方法时,该对象就会被加入到autorelease池中。当自动释放池被销毁时,自动释放池中的所有对象都会被释放。对象执行autorelease方法后,自身的引用计数器不会改变,对象会被归还。2.autorelease的优点。Autorelease实际上只是延迟了对release的调用。对于每个自动释放系统,它只是将对象放入当前的自动释放池中。当池被释放时,池中的所有对象都会被释放。调用release是因为里面的对象只有在autoreleasepool销毁的时候才被销毁,所以不需要关心对象销毁的时间,也不需要关心什么时候调用release3.使用autorelease时,在操作占用内存较大的对象时要小心使用,如果担心对象释放时间来不及,可以使用占用内存相对较小的对象。4.atureleasepool自动释放池自动释放池在内存中存储在栈中,遵循“先进后出”的原则#import#import"Person.h"intmain(intargc,constchar*argv[]){//Autoreleasepool1@autoreleasepool{ //对象??的释放交给autoreleasepool管理,不用写[personrelease]Person*person=[[[Personalloc]init]autorelease];//创建另一个自动释放池2@autoreleasepool{Person*person2=[[[Personalloc]init]autorelease];}Person*person3=[[[Personalloc]init]autorelease];}return0;}从上面代码,我们可以看到代码执行时先销毁了person2对象,然后外部对象person和perons3在内存中显示如下:5.使用常见错误//destroyautorelease如果要执行release操作在pool中的person上,会报野指针错误@autoreleasepool{Person*person=[[[Personalloc]init]autorelease];[personrelease];}//对象执行两次autorelease,也就是说当autoreleasepool被销毁时,对象会执行两次release操作,报野指针错误@autoreleasepool{Person*person=[[[[Personalloc]init]autorelease]autorelease];}