2012-09-30 33 views
2

我開始Objective-C和我試圖創建一個integers陣列multidimensionnal,這裏是我是如何做的:聲明常量二維數組的大小

文件Constants.h(在加Prefix.pch文件)

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

文件Board.m

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

我想爲我的widthheight創建常量的很多很多的方式和這種方式似乎只有一個(完全)正確的......我也試圖與define但我不喜歡這個,因爲它不是類型(我是錯誤的想法?)...

有沒有更好的方式來創建?我覺得這是不是真的乾淨。

編輯:
NSInteger*NSInteger,我顯然希望的integers,不是指針數組。

+1

我不會擔心的#define不被類型化,但每一個他自己。就像旁註一樣,你正在創建一個整數指針的二維數組;你可能只想'NSInteger mBoard [BOARD_WIDTH] [BOARD_HEIGHT]'直接將整數存儲在數組中。 –

+0

糟糕,錯字!謝謝 ! –

回答

4

你不應該聲明這樣的尺寸。枚舉通常用於具有多個選項時,並且您希望爲每個選項指定一個名稱(而不是僅使用數字)。

要爲您的數組聲明常量,您有幾個選項。

  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]; 
+0

這不會工作,因爲BOARD_WIDTH和BOARD_HEIGHT沒有聲明... –

+0

你走了!我正在尋找你的「靜態const int的東西」...我忘了靜態,它不會工作...我認爲,在我的const聲明這個靜態常量,並以這種方式創建我的數組絕對是我一直在尋找, 非常感謝你 ! –

0
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. 
+0

這樣做的好處是什麼?看起來非常痛苦地啓動我的陣列,不是嗎? –

+0

OP使用C數組,而不是'NSArray'。 – DrummerB

+0

好的,好吧,這是製作多維數組的方法,我認爲這就是你要求的,但也許我誤解了。 –