我已经定义了一个SKSPriteNode的2D数组。它被定义为:
SKSpriteNode *arr [17][25];
现在我想制作测试此数组中的冲突的过程并将此数组作为参数传递。我该怎么做?我试过了:
-(BOOL)checkCollisions:(SKSpriteNode*)array
{
...
return result;
}
但是我称之为:
BOOL collision = [self checkCollisions:arr];
XCode抗议(不兼容和ARC问题)。有人可以告诉我,如何正确地调用它(或如何定义SKSpriteNodes的二维数组)?
答案 0 :(得分:2)
您应该考虑使用包含NSArray
个NSArray
个对象的SKSpriteNode
对象。这样,您就不会对节点数量进行硬编码限制,ARC在确定如何保留和释放对象时也不会有任何问题。
不兼容性投诉是因为您的arr变量在旧式C中的类型为SKSpriteNode ***
。如果编译器仍然抱怨它类似于(SKSpriteNode *)[][]
。错误消息可能有助于计算传递二维C指针数组的语法。
答案 1 :(得分:0)
Objective C中的数组由NSArray对象表示。
-(BOOL)checkCollisions:(NSArray*)array
{
SKSpriteNode *node = array [x][y];
...
return result;
}
注意:使用容器访问([])可能会导致不必要的副作用。最好使用与NSArray相关的方法:
[array objectAtIndex:0];
对于多维数组,
[[array objectAtIndex:0] objectAtIndex:0];
请阅读使用Objective C here中的数组对象。
答案 2 :(得分:0)
指针和多维数组是不同的类型(至少在C中)。
尝试将完整数组(带边界)指定为方法
的参数