ARC がなければ、以下に示すように、アレイの自動解放を使用できます
//-(NSMutableArray *)getObjects
-(NSMutableArray *)retrieveObjects
{
NSMutableArray *aArray = [[NSMutableArray alloc] init];
// add objects
return [aArray autorelease];
}
ARCで同じことを達成するにはどうすればよいですか?
ARC がなければ、以下に示すように、アレイの自動解放を使用できます
//-(NSMutableArray *)getObjects
-(NSMutableArray *)retrieveObjects
{
NSMutableArray *aArray = [[NSMutableArray alloc] init];
// add objects
return [aArray autorelease];
}
ARCで同じことを達成するにはどうすればよいですか?
autorelease
あなたはオブジェクトではありません。
そのオブジェクトを自動解放する必要はありません。ARCが担当します。ただし、メソッドから返されたオブジェクトに対して何も強く参照されていない場合は、getObjects
すぐに解放されます。
array = [self getObjects] // array should be a strong variable
Apple のAdvance Memory Management Programming Guideによると
自動参照カウント (ARC) では、システムは MRR と同じ参照カウント システムを使用しますが、コンパイル時に適切なメモリ管理メソッド呼び出しを挿入します。新しいプロジェクトには ARC を使用することを強くお勧めします。ARC を使用する場合、通常、このドキュメントで説明されている基本的な実装を理解する必要はありませんが、状況によっては役立つ場合があります。
通常、retain、release、または autorelease メソッドを使用する必要はありません。システムがそれを行います。ただし、保持サイクルを実行しないように注意する必要があります。そうした場合、それらのオブジェクトは解放されません。
そのように:
-(NSMutableArray *)getObjects
{
NSMutableArray *aArray = [NSMutableArray alloc] init];
// add objects
return aArray;
}