我正在编写一款iPhone游戏,其中包含在网格上布置的项目。每个项目都由一个对象表示,我想使用2D数组来表示网格的内容。因为我需要通过方法传递数组,所以我试图将其声明为:
MyClass*** grid;
并有一个方法将其返回为:
-(MyClass ***) {
return grid
}
但在编译之前我得到了这个错误:
Pointer to non-const type 'MyClass *' with no explicit ownership.
这是什么意思,为什么会发生?
答案 0 :(得分:1)
你可以使用标准的C 2D数组,
MyClass *item = (MyClass *)grid[x][y];
答案 1 :(得分:1)
使用自动引用计数时,您无法指向对象指针,因为所有者将是未知的。
您可以使用嵌套的NSArray
对象,或者切换到手动引用计数(如果您已经有一个大型项目,则不应该使用后者)。
您也可以使用这样的方法,被调用者将多次调用(对于网格中的每个单元格一次):
- (id)itemAtX:(NSUInteger)x y:(NSUInteger)y {
// TODO: Add bounds checking.
return grid[x][y];
}