Objective-C(8)内存管理之自动释放池
自动释放池
是一种半自动的内存管理方式
autorealease方法:
-(instancetype)autorelease
此方法将对象放到自动释放池中,当自动释放池销毁时,池中的所有对象都会随之销毁。
常见的使用方式:
Person*p=[[[Perosnalloc]init]autorelease];
使用@autoreleasepool关键字来使用自动释放池
其后的{…}相当于自动释放池的生存期 ,如:
@autoreleasepool{Person*p=[[[Perosnalloc]init]autorelease];…}
好处:不用关心对象释放的时间、不用关心什么时候调用release
注意:
1)占用内存较大的对象尽量不要随意使用autorelease
2) @autoreleasepool可以嵌套
系统中有一个自动释放池的栈结构,autorelease方法是将对象放入到栈顶得池子中
3)不要多次调用autorelease,如:
[[[[Personalloc]init]autorelease]autorelease];
4)自动释放池销毁时会对池子中的对象release一次,也就是说autorelease方法并没有更改引用计数。
将autorelease方法封装在类对象方法中是一个比较好的做法
+(AMPerson*)person{//return[[[Personalloc]init]autorelease];return[[[selfalloc]init]autorelease];}
旧版本的自动释放池的使用:
NSAutoreleasePool*pool=[[NSAutoreleasePoolalloc]init];…[poolrelease];
自Xcode5之后基本都是使用autorelease
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。