-(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]:发送到实例错误的无法识别的选择器帮助我。
答案 0 :(得分:1)
该数组的索引2处的对象不是FileGame
对象。这是一个NSNumber
。您已经以一种您不想要的方式填充数组,或者更有可能的是,您希望找到的对象已经被释放,并且该地址被重新用于另一个对象。
在您的方案中打开僵尸,您可能会收到更好的错误消息。
此外,尝试在分配时记录square
的值并验证数据类型。
答案 1 :(得分:0)
笨重的目标-c在运行之前并不是真正的类型安全。我会检查你的代码,以确保你没有将NSNumber放入该数组中。将它从您将要看到的阵列中拉出后,设置一个断点。