Objective C中的2D数组指针?

时间:2011-11-19 21:49:11

标签: iphone objective-c

我正在编写一款iPhone游戏,其中包含在网格上布置的项目。每个项目都由一个对象表示,我想使用2D数组来表示网格的内容。因为我需要通过方法传递数组,所以我试图将其声明为:

MyClass*** grid;

并有一个方法将其返回为:

-(MyClass ***) {
    return grid
}

但在编译之前我得到了这个错误:

Pointer to non-const type 'MyClass *' with no explicit ownership.

这是什么意思,为什么会发生?

2 个答案:

答案 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];
}