苹果公司表示,这是节省内存的好主意。在代码中会是什么样子?

最佳答案

通常,您不需要创建自动释放池,因为系统对此很在意。但是,有时您需要这样做。通常会出现大循环。代码如下所示:

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

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

09-18 19:24