NSMutableArray не сохраняет? - PullRequest
       2

NSMutableArray не сохраняет?

0 голосов
/ 13 ноября 2010

У меня есть некоторые проблемы с моими массивами, я надеялся, что кто-нибудь здесь может сказать мне, что я делаю неправильно.

У меня есть 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 Ответ

1 голос
/ 13 ноября 2010

Вам необходимо просмотреть Рекомендации по управлению памятью .

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

Вы создаете массив (который у вас есть), а затем немедленно заменяете его другим массивом.

И может показаться, что весь ваш блок кода можно заменить следующим:

finalAnswersArray = [[self shuffleArray:tmpAnswersArray] mutableCopy];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...