正确初始化NSMutableArray的方法

时间:2012-10-02 02:04:15

标签: objective-c ios nsmutablearray

我有一个NSMutableArray的ivar。我见过有些人使用这个函数作为初始化数组的方法:

- (NSMutableArray *)varArray
{
   if (!varArray)
      varArray = [[NSMutableArray alloc]init];

   return varArray;
}

阵列在dealloc中发布。

当我尝试这样做时,有时会初始化数组,有时不会。

所以我要问的是,这是初始化ivar NSMutableArray的好方法,还是最好这样做:varArray = [[[NSMutableArray alloc]init]autorelease];代替?

2 个答案:

答案 0 :(得分:1)

这一行:

varArray = [[NSMutableArray alloc]init];

总是很好,但功能在哪里才重要。看来你是在变量的setter中初始化它,所以每当你查询那个实例变量时,它应该总是存在......理论上。但是如果您只是将ivar设置为nil而不将其设置为nil,则可能会出现问题,因此以下内容将显式重置ivar指针,以便在解除分配时保证为nil:

[varArray dealloc];
varArray = nil;

这将确保您的if (!varArray)检查正确无误。

答案 1 :(得分:0)

  

所以我要问的是,这是初始化ivar NSMutableArray的好方法

只需实现对象的指定初始值设定项并在那里初始化数组:

- (id)init
{
  self = [super init];
  if (0 == self)
    return 0;
  varArray = [NSMutableArray new];
  return self;
}