我發現一個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