2

ARC がなければ、以下に示すように、アレイの自動解放を使用できます

//-(NSMutableArray *)getObjects 

-(NSMutableArray *)retrieveObjects
{
    NSMutableArray *aArray = [[NSMutableArray alloc] init];
   // add objects
   return [aArray autorelease];
}

ARCで同じことを達成するにはどうすればよいですか?

4

5 に答える 5

8

autoreleaseあなたはオブジェクトではありません。

于 2013-06-26T07:40:59.413 に答える
4
于 2013-06-26T07:43:04.583 に答える
2

そのオブジェクトを自動解放する必要はありません。ARCが担当します。ただし、メソッドから返されたオブジェクトに対して何も強く参照されていない場合は、getObjectsすぐに解放されます。

array = [self getObjects] // array should be a strong variable
于 2013-06-26T07:43:18.093 に答える
2

Apple のAdvance Memory Management Programming Guideによると

自動参照カウント (ARC) では、システムは MRR と同じ参照カウント システムを使用しますが、コンパイル時に適切なメモリ管理メソッド呼び出しを挿入します。新しいプロジェクトには ARC を使用することを強くお勧めします。ARC を使用する場合、通常、このドキュメントで説明されている基本的な実装を理解する必要はありませんが、状況によっては役立つ場合があります。

通常、retain、release、または autorelease メソッドを使用する必要はありません。システムがそれを行います。ただし、保持サイクルを実行しないように注意する必要があります。そうした場合、それらのオブジェクトは解放されません。

于 2013-06-26T07:52:37.253 に答える
1

そのように:

-(NSMutableArray *)getObjects
{
    NSMutableArray *aArray = [NSMutableArray alloc] init];
   // add objects
   return aArray;
}
于 2013-06-26T07:43:33.103 に答える