0
NSMutableArray * arrayTest;

-(void) setContent
{
  //must I call [array removeAllObjects]; ? 
  arrayTest = [[NSMutableArray alloc] init]

  [arrayTest addObject:@"str"];
  ...//add many objects
}

この関数を別のコードスニペットで呼び出します。前にarrayTestのAllObjectsを削除してから、毎回arrayTestにメモリを割り当てる必要がありますか?私はARCを使用しています。この関数を呼び出すたびにアプリのメモリを増やしたくありません。

4

2 に答える 2

3

いいえ、あなたが持っているものは大丈夫です。removeAllObjectsARCまたは非ARCで呼び出す必要はありません。

古い配列の割り当てが解除されると、古い配列内のすべてのオブジェクトが解放されます。

于 2012-11-20T15:53:25.013 に答える
1

メモリを割り当てる前に、arrayTestが存在するかどうかを確認してください。そうでない場合は、メソッドが呼び出されるたびに新しい配列が作成されます(配列を保持し、しばらくの間その内容が含まれていると仮定します)。またはさらに良い..allocをクラスのinitに移動します。

-(void) setContent
{
  if(!arrayTest){
      arrayTest = [[NSMutableArray alloc] init];
  }

  [arrayTest addObject:@"str"];
  ...//add many objects
}
于 2012-11-20T15:58:33.163 に答える