没有使用@autoreleasepool就没有内存泄漏

时间:2012-06-13 19:36:21

标签: objective-c

我在ARC下并尝试使用@autoreleasepool,但我怀疑是没用的,让我们更好地说即使我不使用@autoreleasepool我也没有内存泄漏,就像在这段代码中一样:

#import <Foundation/Foundation.h>
#import <Cocoa/Cocoa.h>

int main (int argc, const char * argv[])
{
    NSMutableArray* array = [ [NSMutableArray alloc] init];
    NSDate* date= [[NSDate alloc]init];
    [array addObject: date];
    return 0;
}

我不使用@autoreleasepool,但如果我尝试使用product-&gt; profile-&gt;泄漏并运行测试以查看是否存在内存泄漏,则表示一切正常且未检测到泄漏有人可以解释一下这个原因吗?

PS:我使用xcode 4.3.3。

1 个答案:

答案 0 :(得分:5)

这些对象都不需要自动释放池。使用alloc创建它们意味着它们会在release结束时由ARC发送main来处理。*即使存在,它们也不会被放入池中。由于没有泄漏,因此没有报告泄漏。

如果您使用[NSDate date]而不是alloc,则需要自动释放池。


*实际上,如果ARC没有打扰,我不会感到惊讶,因为当main结束并且程序终止时,所有内存将被回收。