【问题标题】:IOS ARC NSMutableArray do I need to removeAllObjects before alloc new memory for itIOS ARC NSMutableArray我需要在为其分配新内存之前删除AllObjects吗
【发布时间】:2012-11-20 15:51:20
【问题描述】:
NSMutableArray * arrayTest;

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

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

我用不同的代码 sn-p 调用这个函数。我需要先删除arrayTest的AllObjects,然后每次都为arrayTest分配内存吗?我使用 ARC 。 我不希望每次调用此函数时我的应用程序内存都增加。

【问题讨论】:

    标签: ios memory nsmutablearray automatic-ref-counting


    【解决方案1】:

    不,你所拥有的一切都很好。在 ARC 或非 ARC 下,您无需调用 removeAllObjects

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

    【讨论】:

    • 在非 ARC 下,您至少需要先调用 [arrayTest release],或者在分配后的某个时间点自动释放它。
    【解决方案2】:

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

    -(void) setContent
    {
      if(!arrayTest){
          arrayTest = [[NSMutableArray alloc] init];
      }
    
      [arrayTest addObject:@"str"];
      ...//add many objects
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-20
      • 1970-01-01
      • 1970-01-01
      • 2021-09-05
      • 2016-04-29
      • 2013-08-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多