【问题标题】:Declare constant for 2 dimensional array's size为二维数组的大小声明常量
【发布时间】:2012-09-30 16:19:02
【问题描述】:

我正在开始使用 Objective-C,我正在尝试创建一个 integers 的多维数组,我是这样做的:

文件常量.h(添加到 Prefix.pch 文件中)

typedef enum {
    BOARD_WIDTH=10,
    BOARD_HEIGHT=20
} BoardSizeEnum;

File Board.m

@implementation Board
{
    NSInteger mBoard[BOARD_WIDTH][BOARD_HEIGHT];
}

我尝试了很多方法来为我的widthheight 创建常量,而这种方法是唯一一种看起来(相当)正确的方法...我也尝试过使用define,但我不喜欢这样因为它没有输入(我想错了吗?)...

有没有更好的方法来创建这个?感觉不是很干净……

编辑:
NSInteger*NSInteger,我显然想要一个 integers 的数组,而不是指针。

【问题讨论】:

  • 我不会担心#define 不会被输入,而是每个人自己的。顺便说一句,您正在创建一个整数指针的二维数组;您可能只是希望NSInteger mBoard[BOARD_WIDTH][BOARD_HEIGHT] 将整数直接存储在数组中。

标签: objective-c arrays constants


【解决方案1】:

您不应该这样声明尺寸。当您有多个选项并且想要为每个选项命名(而不仅仅是使用数字)时,通常会使用枚举。

要为数组声明常量,您有几个选择。

  1. 使用预处理器宏

    #define BOARD_WIDTH 10

  2. 使用常量

    static const int boardWidth = 10;

而且你的声明是错误的。您正在声明一个由NSInteger 指针 组成的二维数组。它应该是这样的:

// assuming width and height is declared as described above.
NSInteger mBoard[width][height]; 

【讨论】:

  • 你去!我一直在寻找你的“静态 const int 东西”……我忘记了静态,它不起作用……我认为在我的 const 中声明这个静态 const 并以这种方式创建我的数组绝对是我想要的,非常感谢!
【解决方案2】:
NSMutableArray *words[26];
    for (i = 0;i<26;) {
    words[i] = [[NSMutableArray alloc] init];
    }

你可以这样使用它

[words[6] addObject:myInt];
[words[6] insertObject:myInt atIndex:4];
[words[6] objectAtIndex:4];
//in this case 6 is the column number and 4 is the row.

【讨论】:

  • 这样做有什么好处?初始化我的数组似乎太痛苦了,不是吗?
  • OP 使用的是 C 数组,而不是 NSArray
  • 好的,这就是制作多维数组的方法,我以为这就是你要求的,但也许我误解了。
  • @BobOdenkirk 不,事实上,这更像是一个常量问题而不是数组创建问题...但是由于我是从 Objective-C 开始的,确实非常有趣...谢谢
  • 是的,对不起,如果你可以使用像上面这样的 C 数组来做,我的方法可能有点矫枉过正......这就是我在 Objective-C 中的做法,现在看起来可能抱歉,您的方法会更相关。
猜你喜欢
  • 1970-01-01
  • 2020-10-22
  • 1970-01-01
  • 2011-02-21
  • 2012-11-10
  • 2021-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多