1
-(FileGame *)objectAtXandY:(int) posX secondPos:(int)posY
{

    if (posX < 0 || posX >= kBoxWidth || posY < 0 || posY >= kBoxHeight)
    return OutBorderStart;

    return (FileGame*)[[content objectAtIndex:posY]objectAtIndex:posX];
}

-(void) checkWith:(BOOL)orien
{
int iMax = (orien == isLandscape) ? size1.width : size1.height;
int jMax = (orien == isPortrait) ? size1.height : size1.width;
for (int i=0; i<iMax; i++) 
{
    int count = 0;
    int balValue = -1;
    for (int j=0; j<jMax; j++)
    {
      FileGame* tile =[self objectAtXandY:(orien == isLandscape) ?i :j secondPos:(orien == isPortrait) ?j :i];

      [readyToRemove addObject:tile];   
 }
}
FileGame* square = [readyToRemove objectAtIndex:2];
    square.value1 = 0;
  if(square.value1==balVal)
  {
    //some thing to do  
  }
else{
//some thing to do
}
}

这里 readyToRemove 是 NSMutableArray,balVal 是 int,FileGame 是 CCNode。当我运行这个时,我得到 -[__NSCFNumber value1]: unrecognized selector sent to instance 错误帮助我。

4

2 回答 2

1

该数组索引 2 处的对象不是FileGame对象。这是一个NSNumber。要么您以不希望的方式填充了数组,或者更有可能的是,您希望在那里找到的对象已被释放,并且地址被重新用于不同的对象。

在你的方案中打开僵尸,你可能会得到更好的错误信息。

此外,尝试记录square分配它的值并验证数据类型。

于 2014-10-13T15:54:11.370 回答
0

Becareful Objective-c 直到运行时才真正是类型安全的。我会检查您的代码以确保您没有将 NSNumber 放入该数组中。将其从阵列中拉出后放置一个断点,您将看到。

于 2014-10-13T15:53:32.170 回答