IOS ARC NSMutableArray在为其分配新内存之前是否需要删除AllObjects

时间:2012-11-20 15:51:21

标签: ios memory nsmutablearray automatic-ref-counting

NSMutableArray * arrayTest;

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

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

我在不同的代码片段中调用此函数。我之前是否需要删除arrayTest的AllObjects,然后每次为arrayTest分配内存?我用ARC。 每次调用此函数时,我都不希望我的应用程序内存增加。

2 个答案:

答案 0 :(得分:3)

不,你有什么好。您无需在ARC或非ARC下拨打removeAllObjects

当旧数组被释放时,它将负责释放旧数组中的所有对象。

答案 1 :(得分:1)

在分配内存之前检查arrayTest是否存在。如果不这样做,每次调用该方法时都会有一个新数组(假设你想保持数组及其内容一段时间)。或者甚至更好..将alloc移动到类的init中。

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

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