大数据处理,如高清图片的加载等,在加载过程中往往需要对加载过程中创建的内存对象进行回收利用:
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSMutableArray *mArray = [[NSMutableArray alloc] init];
for (int index = 0; index < 10000; index++) {
NSString *str = @"根据index在数据库获取的字符串或其它"
[mArray addObject:str];
if (index % 1000 == 0) {
[pool release];
pool = [[NSAutoreleasePool alloc] init];
}
[str autorelease];
}
[pool release];
另外: 每一个runloop,系统会隐式创建一个autorelease pool,每个runloop结束时,对应autorelease pool会销毁,销毁时pool中每个object都会release一次。 一次事件就产生一个runloop,如一次鼠标点击,键盘点击,一次触摸,一次异步http连接并接收完数据等 也可以自己创建autorelease pool,比如在一个循环中用到了太多的临时变量,在整个循环结束(或每一次循环结束)后想让其自动release.
|