【发布时间】:2010-10-19 00:53:27
【问题描述】:
Apple 说这是节省内存的好主意。这在代码中会是什么样子?
【问题讨论】:
Apple 说这是节省内存的好主意。这在代码中会是什么样子?
【问题讨论】:
通常你不需要创建自动释放池,因为系统关心这个。但是,有时您需要这样做。它通常在大循环中。代码如下所示:
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];
自动释放池保存为一个堆栈:如果您创建一个新的自动释放池,它会被添加到堆栈的顶部,并且每条自动释放消息都会将接收者放入最顶部的池中。
【讨论】: