Этот пример кода заставил меня что-то определить, но я пока не хочу? - PullRequest
0 голосов
/ 07 мая 2011

У меня есть некоторый открытый исходный код, который включает в себя:

.h:

#define TILE_ROWS    6
#define TILE_COLUMNS 2
#define TILE_COUNT   (TILE_ROWS * TILE_COLUMNS)

@class Tile;

@interface TilesViewController : UIViewController {
@private
    CGRect   tileFrame[TILE_COUNT];
    Tile    *tileForFrame[TILE_COUNT];

}

А потом по всему .m, вот так:

   for (int row = 0; row < TILE_ROWS; ++row) {
        for (int col = 0; col < TILE_COLUMNS; ++col) {

и

tileFrame[index] = frame;

и

 tileForFrame[index] = tile;

Но я хочу установить TILE_ROWS для результата, например:

float rowsNeeded = ceil(rowsNeededA/TILE_COLUMNS);

Поэтому, следовательно, это должно быть позже, но я думаю, что CGRect и Tile могут быть определены только там. Мне нужна помощь, я не уверен, что делать.

1 Ответ

2 голосов
/ 07 мая 2011

Вы должны превратить определения в переменную экземпляра и динамически распределить массивы:

@class Tile;

@interface TilesViewController : UIViewController {
@private
    int       tileRows;
    int       tileColumns;
    int       tileCount;
    CGRect*   tileFrame;
    Tile**    tileForFrame;
}

...

tileColumns = 2;
tileRows = (rowsNeededA + tileColumns - 1) / tileColumns;
tileCount = tileColumns * tileRows;
tileFrame = (CGRect*)malloc(tileCount * sizeof(CGRect));
tileForFrame = (Tile**)malloc(tileCount * sizeof(Tile*));

Цикл for становится:

for (int row = 0; row < tileCount; ++row) {
    for (int col = 0; col < tileCount; ++col) {
...