我询问了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/

10-09 16:35