答案 0 :(得分:11)
通常,您不需要创建自动释放池,因为系统关心这一点。但是,有时你需要这样做。它通常在大循环中。代码看起来像这样:
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
int i;
for (i = 0; i < 1000000; i++) {
id object = [someArray objectAtIndex:i];
// do something with object
if (i % 1000 == 0) {
[pool release];
pool = [[NSAutoreleasePool alloc] init];
}
}
[pool release];
自动释放池保存为堆栈:如果您创建一个新的自动释放池,它将被添加到堆栈的顶部,并且每个自动释放消息都会将接收器放入最顶层的池中。