苹果公司表示,这是节省内存的好主意。在代码中会是什么样子?
最佳答案
通常,您不需要创建自动释放池,因为系统对此很在意。但是,有时您需要这样做。通常会出现大循环。代码如下所示:
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];
自动释放池作为堆栈保存:如果创建一个新的自动释放池,它将被添加到堆栈的顶部,并且每条自动释放消息都会将接收者放入最顶层的池中。