我询问了NSAutoreleasePool,并了解在这种情况下我需要显式分配自动释放池。
int main()
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
// Create an array
NSArray *month = [NSArray arrayWithObjects:@ ... nill];
[pool drain];
}
在我的其他question中,我不需要发布
NSArray
,因为它将被自动发布。- (NSArray*) getTodayArray
{
...
NSArray *res = [NSArray arrayWithObjects: year, month, nil];
return res;
}
为了即使我没有做任何NSAutorelease也是自动释放的对象,在Cocoa中应该分配一些
default
自动释放池。 Xcode生成的main函数非常简单。int main(int argc, char *argv[])
{
return NSApplicationMain(argc, (const char **) argv);
}
这是对的吗?如果是这样,何时以及如何分配?
最佳答案
主线程的NSRunLoop
每次“循环”都会创建并销毁NSAutoreleasePool
。但是请注意,拆分任何后台线程时,需要为其创建一个自动释放池(因为默认情况下,辅助线程没有活动的运行循环)。
关于objective-c - cocoa 中的默认NSAutoreleasePool?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5138454/