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

不,你所拥有的一切都很好。您无需removeAllObjects在 ARC 或非 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 回答