1

我正在开发 iOS 应用程序,我在 .h 文件中的公共接口中创建了 BOOL 的二维数组,如下所示

布尔数组[10][10];

现在在某些功能的 .m 文件中,我想用其他大小重新标记它可能是

数组[20][20]

我怎样才能做到这一点?

4

2 回答 2

2

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

我在这里发布了一个关于使用订阅的二维数组的可能实现的解决方案:

二维数组实例变量的 Objective-c 语法

如果你使用 C 数组,你必须自己管理内存,所以你可以在 .h 中声明一个指向二维数组的指针,如果需要更大的数组,可以使用 new、free、realloc 和 copy 分配内存。我不建议这种方法。

于 2013-04-30T10:27:37.240 回答
0

简单的答案是你不能。对于 C 数组,除了创建结构及其相关函数之外,您唯一可以做的事情如下:

// 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,要么创建一个结构和相关函数来操作动态调整大小的数组。

于 2013-04-30T10:42:29.743 回答