所以,我在编程项目上苦苦挣扎。
我有一个存储玩家信息,名字,胜利和损失的对象。
我继续在另一个设置播放器信息值的对象(括号)中使用该对象,在每个循环之后,它将播放器对象复制到括号类中的NSMutable。
在括号类中,我有一个打印信息的方法,这很容易弄明白。
现在,为了生成下一个括号会发生什么,我设置了一个方法,当它完成复制谁赢或输时会返回一个括号。
我在同一个括号方法中完成了所有操作,因此我可以尽可能轻松地访问数据。我如何只是制作播放器对象的副本并将其添加到新括号?
当我尝试打印出刚刚生成的Bracket时,我发现我只是得到垃圾值或者什么都没有。这是我的功能,我遇到了麻烦。
-(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);
}
所以,我认为这样才会奏效。它编译得很好(我得到一些警告,但它是关于整数,我主要用于逻辑)。
谢谢!
答案 0 :(得分:0)
我的评论:
选择的定义不正确。您已将其定义为指向int的指针,但您正在使用它,就像它在代码中的任何位置都是一个int。请注意,selection ++通过sizeof(int)而不是1来增加选择。
你不应该使用-new初始化对象,但是-alloc然后是-init。 (这是现代惯例)。
问题的最可能原因是playerarray未初始化。