我正在开发iOS应用程序,我在.h文件中的公共接口中创建了2d数组的BOOL
BOOL数组[10] [10];
现在在某个函数的.m文件中我想用其他一些大小重新调用它
阵列[20] [20]
我该怎么做?
答案 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或创建一个结构和相关的函数来操作动态调整大小的数组。