iPhone SDK 2d int массив - PullRequest
       17

iPhone SDK 2d int массив

1 голос
/ 23 января 2012

Я пытаюсь создать 2-мерный массив в target-c, и я не хочу использовать 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] = {...};), но мне нужно, чтобы массив был общедоступным, чтобы я мог получить к нему доступ из любой функции.

Во второй строке указано ожидание точки с запятой.

Спасибо

Ответы [ 4 ]

0 голосов
/ 29 января 2012

Как насчет этой удивительности ... (не совсем)

// .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

0 голосов
/ 23 января 2012

Поскольку это также помечено как C ++, вы можете использовать ivar:

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

Затем вы просто изменяете размеры и устанавливаете начальные значения элементов в инициализаторе вашего объекта.

В противном случае этоглобальный или ивар?это должно быть постоянным или изменяемым?

0 голосов
/ 23 января 2012

Когда я попробовал ваш оригинальный код, я получил немного другие ошибки, но это сработало:

// .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
};
0 голосов
/ 23 января 2012

Похоже, у вас есть лишняя запятая рядом с // 5

Вам нужно объявить тип для aTiles?

 int aTiles = ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...