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送信する ARC によって処理されることを意味するそれらを作成すると、プールが存在していても、プールには入れられません。リークがないため、リークは報告されていません。releasemain

[NSDate date]の代わりに使用する場合は、自動解放プールが必要になりますalloc


main*実際には、プログラムが終了して終了するときにすべてのメモリが再利用されるため、ARC が気にしなくても驚かないでしょう。

于 2012-06-13T19:47:07.163 に答える