如何创建本地自动释放池以节省内存?

时间:2009-04-12 18:49:25

标签: iphone memory-management

Apple说这对于节省内存是个好主意。在代码中会是什么样的?

1 个答案:

答案 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];

自动释放池保存为堆栈:如果您创建一个新的自动释放池,它将被添加到堆栈的顶部,并且每个自动释放消息都会将接收器放入最顶层的池中。