Рекурсивное создание объекта и копирование определенных объектов из массива в указанном объекте. - PullRequest
0 голосов
/ 04 ноября 2010

Итак, я немного борюсь со своим программным проектом.

У меня есть объект, в котором хранится информация об игроке, имя, выигрыши, проигрыши.

Я перехожу к использованию этого объекта вдругой объект (скобка), который устанавливает значения информации об игроке, после каждого цикла он копирует объект проигрывателя в NSMutable в классе скобок.

В классе скобок у меня есть метод для распечатки информации, который было достаточно легко выяснить.

Теперь, чтобы сгенерировать то, что произойдет для следующей скобки, я настроил метод, который будет возвращать скобку, когда закончится копирование, кто выиграл или проиграл.

Я сделал все это в течениетот же метод скобок, чтобы я мог получить доступ к данным как можно проще.Как мне просто сделать копию объекта проигрывателя и добавить его в новую скобку?

Я обнаруживаю, что просто получаю значения мусора или вообще ничего, когда пытаюсь распечатать только что сгенерированную скобку.Вот моя функция, с которой у меня проблемы.

-(Bracket *) NextRound//Configures the next round
{
 int i, y, *selection; //counter and selection
 int comp;
 y = 1;
 i = 0;//so the counter won't get messed up

 Bracket *roundx = [Bracket new]; //creates the bracket that will be sent back with the winners. 

   NSLog(@"Did %@(1) or %@(2) win (1 or 2)?: ",[[playerarray objectAtIndex:i] name], [[playerarray objectAtIndex:y] name]);
  scanf("%d",&selection); 
  comp = selection++;

  if (comp == 1)
  {  
   NSLog(@"Player %d %@ selected to win", i, [[playerarray objectAtIndex:i] name]);


   [[self.playerarray objectAtIndex:i] setNext];//bool value for win or not
   [roundx.playerarray addObject: [self.playerarray objectAtIndex:i]];
   [roundx Print];//Too see if it has anything, usually it does not.

  }
  else
  {
   i++;
   NSLog(@"Player %d %@ selected to win", i, [[playerarray objectAtIndex:i] name]);
   [[self.playerarray objectAtIndex:i] setNext];
   [roundx.playerarray addObject: [self.playerarray objectAtIndex:i]];
   [roundx Print];

  }
 return(roundx);
}

Итак, я подумал, что это сработает.Он прекрасно компилируется (я получаю несколько предупреждений, но речь идет о целых числах и таких, которые я использую в основном для логики).

Спасибо!

1 Ответ

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

Мои комментарии:

Определение выбора неверно. Вы определили его как указатель на int, но используете его так, как если бы он был везде в вашем коде. Обратите внимание, что selection ++ увеличивает выбор на sizeof (int), а не 1.

Вы не должны использовать -new для инициализации объектов, а -alloc и затем -init. (Это современная конвенция).

Наиболее вероятной причиной вашей проблемы является то, что playerarray не инициализирован.

...