我在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。
答案 0 :(得分:5)
这些对象都不需要自动释放池。使用alloc
创建它们意味着它们会在release
结束时由ARC发送main
来处理。*即使存在,它们也不会被放入池中。由于没有泄漏,因此没有报告泄漏。
如果您使用[NSDate date]
而不是alloc
,则需要自动释放池。
*实际上,如果ARC没有打扰,我不会感到惊讶,因为当 main
结束并且程序终止时,所有内存将被回收。