1.作用;实质是延长对象的release时间
2. 语法:
@autoreleasepool { 类型 变量*=[[[类型 alloc] init] autorelease]; //.... } //或 NSSAutoreleasePool *pool=[[NSSAutoreleasePool alloc] init]; //代码 [pool release];
解析:第一种,首先会创建一个autorelease的池子(autoreleasepool),待创建变量的时候就将创建的对象放入autorelease池子中
最后当{}结束时,就将池子和池子中的所有对象release一次
第二种:在ios5.0 之前使用的方式
先定义一个自动释放池,将代码写在这个池子对象创建和release之间,当池子对象release了,里面的oc对象也跟着release
3.在实际的开发中,通常将创建一个autorelease对象封装到类方法中,这样能够快速的调用方法创建对象,不用编写长长的定义
代码,但是创建对象的时候最好不用类名,用self这样更佳灵活,谁调用这个方法,就创建谁的对象
[[self alloc]init]autorelease]
4.注意:ARC模式下不能使用NSAutoReleasePool方式
在自动释放池中间不要用循环去创建对象,这样会导致内存峰值上升
尽量避免对大内存使用该方法,这种延迟机制,还是尽量少用
sdk中的静态方法一般是自动释放的,不用我们自己在release