iPhone SDK 2d int array

iPhone SDK 2d int array

本文关键字:array int 2d SDK iPhone      更新时间:2023-10-16

我正试图在objective-c中创建一个2d数组,但我并不真的想使用NSArray,因为我使用的是int,代码会很烦人:{[array objectAtIndex:x] objectAtIndex:y],更不用说我必须将数字从NSNumber转换回来。。。看起来有很多额外的工作。

我不能做以下事情吗?

// .h file
int aTiles[10][2];
// .m file
aTiles = {
        { 0,  0}, // 0
        { 0,  1}, // 1
        { 1,  5}, // 2
        { 0,  0}, // 3
        { 0,  0}, // 4
        { 0,  0}, // 5
};

它在同一行(int a[x][x] = {...};)中一起工作,但我需要数组是公共的,这样我就可以从任何函数访问它。

第二行表示应使用分号。

感谢

看起来在//5 附近多了一个逗号

你需要为aTiles声明一个类型吗?

 int aTiles = ...

当我尝试您的原始代码时,我得到了略有不同的错误,但这很有效:

// .h file
extern int aTiles[10][2];
// .m file
int aTiles[10][2] = {
        { 0,  0}, // 0
        { 0,  1}, // 1
        { 1,  5}, // 2
        { 0,  0}, // 3
        { 0,  0}, // 4
        { 0,  0}, // 5
};

由于这也被标记为C++,您可以使用ivar:

std::vector<std::vector<int> > tiles;

然后,您只需在对象的初始值设定项中调整和设置初始元素值。

否则,这是全球性的还是ivar?它应该是常量还是可变的?

这个令人敬畏的东西怎么样。。。(不是真的)

// .h
int aTiles[10][2];
// .m
int a[10][2] = {
        { 0,  0}, // 0
        { 0,  1}, // 1
        { 1,  5}, // 2
        { 0,  0}, // 3
        { 0,  0}, // 4
        { 0,  0}, // 5
};
for (int r = 0; r <= 5; r++) {
   for (int c = 0; c < 2; c++) {
      aTiles[r][c] = a[r][c];
   }
}

绝对是一个变通办法,但是。。。想不出其他办法。如果有人找到了正确的方法,请告诉我:P