0

我在 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->profile->leaks 并运行测试以查看是否存在内存泄漏,它说一切正常并且没有检测到泄漏。有人可以解释一下吗这是什么原因?

PS:我使用 xcode 4.3.3 。

4

1 回答 1

5

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

如果您使用[NSDate date]而不是alloc.


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

于 2012-06-13T19:47:07.163 回答