在iOS应用程序中Redeclare 2d数组的BOOL类型

时间:2013-04-30 10:15:48

标签: objective-c cocoa-touch cocos2d-iphone

我正在开发iOS应用程序,我在.h文件中的公共接口中创建了2d数组的BOOL

  

BOOL数组[10] [10];

现在在某个函数的.m文件中我想用其他一些大小重新调用它

  

阵列[20] [20]

我该怎么做?

2 个答案:

答案 0 :(得分:2)

如果你使用C数组它们是不可变的,一旦你分配了一个固定大小的数组,你就无法改变它。

我已经在这里发布了一个使用订阅的可能的2d数组实现的解决方案:

Objective-c syntax for 2d array instance variable

如果使用C数组,则必须自己管理内存,因此可以在.h中声明指向2d数组的指针,并使用new,free,realloc和copy分配内存(如果需要更大的数组)。我不建议采用这种方法。

答案 1 :(得分:0)

简单的答案是,你做不到。对于C-Arrays,除了创建结构及其相关函数之外,您唯一能做的就是:

// In your .h file you declare your arry this way:
extern BOOL *array;

// Assuming that you store _sizeI and _sizeJ for later indexing
// This gives you a 10x10 array of bools
_sizeI = 10;
_sizeJ = 10;
array  = calloc(_sizeI * _sizeJ, sizeof(BOOL));

// You index it as follows for array[i][j]
// You might use a macro for indexing.
BOOL value = array[_sizeI * i + j];

// To resize the array to a 20x20 array
free(array);
_sizeI = 20;
_sizeJ = 20;
array = calloc(_sizeI * _sizeJ, sizeof(BOOL));

我建议使用嵌套的NSArrays或创建一个结构和相关的函数来操作动态调整大小的数组。