- [__ NSCFNumber value1]:发送到实例的无法识别的选择器

时间:2014-10-13 15:38:12

标签: ios cocos2d-iphone cocos2d-iphone-3

-(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.While我运行这个我得到了 - [__ NSCFNumber value1]:发送到实例错误的无法识别的选择器帮助我。

2 个答案:

答案 0 :(得分:1)

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

在您的方案中打开僵尸,您可能会收到更好的错误消息。

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

答案 1 :(得分:0)

笨重的目标-c在运行之前并不是真正的类型安全。我会检查你的代码,以确保你没有将NSNumber放入该数组中。将它从您将要看到的阵列中拉出后,设置一个断点。