3

これをメモリ管理の観点から理解しようとしています。あるクラスでは、NSDictionary オブジェクトを作成するヘルパー メソッドを作成しています。

+(NSDictionary*) getTheDictionary{
    return [[[NSDictionary alloc] initWithObjectsAndKeys:
        @"value", @"key", nil] autorelease];
}

別のクラスから、メソッドを使用します。

NSDictionary* theDictionary = [HelperClass getTheDictionary];

returnステートメントに「autorelease」を含めるだけで十分ですか? theDictionary の自動リリースも必要ですか?

4

1 に答える 1

3

getTheDictionary自動解放されたオブジェクトを返します。これは、オブジェクトが 呼び出し元のメソッドで有効であるが、呼び出し元が所有していないことを意味します。したがって、呼び出し元のメソッドは、そのオブジェクトを解放または自動解放してはなりません。

プログラム制御がメイン イベント ループに戻ったときなど、現在の自動解放プールが終了したときに解放されます。

于 2013-08-13T20:06:46.063 に答える