NSMutableArray不保留?

时间:2010-11-13 19:27:25

标签: objective-c nsmutablearray

我的阵列存在一些问题,我希望这里的任何人都可以告诉我我做错了什么。

我有3个数组:tmpAnswersArray,localAnswersArray& finalAnswersArray。 我也有一个方法来在同一个类中混洗给定的数组。

第一个NSLog显示localAnswersArray的计数是6(它应该如何)。

第三个NSLog显示localAnswersArray计数为0,即使我没有更改该数组中的任何内容。

localAnswersArray = [[NSMutableArray alloc] init];
  localAnswersArray = [self shuffleArray:tmpAnswersArray];

  [tmpAnswersArray release];

  NSLog(@"Shuffled localAnswersArray (count = %d) & removed tmpAnswersArray",[localAnswersArray count]);

  finalAnswersArray = [[NSMutableArray alloc] init];
  NSLog(@"init finalAnswersArray");


  for (int arrayCount = 0; arrayCount < 6; arrayCount++) {
   NSLog(@"TEST ---> %d",[localAnswersArray count]);
   [finalAnswersArray addObject:[localAnswersArray objectAtIndex:arrayCount]];
  }

此代码的第一行是否也保留了数组?

我是否必须以某种方式手动保留它?

为什么数组计数突然下降到0?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您需要查看Memory Management Guidelines

localAnswersArray = [[NSMutableArray alloc] init];
localAnswersArray = [self shuffleArray:tmpAnswersArray];

您创建一个数组(您拥有),然后立即用不同的数组替换它。

似乎你的整个代码块都可以替换为:

finalAnswersArray = [[self shuffleArray:tmpAnswersArray] mutableCopy];