我发现一个Objective-C/cocoa框架的例子有以下代码。Objective-C/cocoa框架中NSAutoreleasePool的神奇之处是什么?
int main()
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
// Create an array
NSArray *month = [NSArray arrayWithObjects:@ ... nill];
[pool drain];
}
Q1:什么是这背后的魔力(为什么我需要有NSAutoreleasePool代码?)?
NSAutoreleasePool
和pool drain
块之间发生了什么魔术?我看到我自己并不需要发布*month
。这是因为它在NSAutoreleasePool
和pool drain
区块内吗? Q2:使用Xcode,我已经获得了main()函数。在这种情况下,我如何使用NSAutoreleasePool
和pool drain
?
例如:
int main(int argc, char *argv[])
{
//NSAutoreleasePool *pool = [[[NSAutoreleasePool] alloc] init];
return NSApplicationMain(argc, (const char **) argv);
}
我没有直接调用-autorelease。这是否被隐含地称为? – prosseek 2011-02-28 04:52:02
是的@Prairiedogg说。 arrayWithObjects在内部调用autorelease。 – 2011-02-28 04:54:50