BOOL类型的重新声明2D阵列在IOS应用(Redeclare 2d array of BOOL t

2019-09-29 03:14发布

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

BOOL阵列[10] [10];

现在,在一些功能.m文件,我想与其他一些大小redecalre可能

阵列[20] [20]

我怎样才能做到这一点?

Answer 1:

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

我已经张贴在这里的解决方案上使用订阅二维数组一个不可能性的实现:

用于2D阵列的实例变量目标c语法

如果使用C数组,你必须自己管理内存,这样你就可以声明指针使用新的,免费的,realloc的在h和分配存储器的二维数组和复制,如果一个更大的阵列是必要的。 我不建议这种方法。



Answer 2:

简单的答案是,你不能。 对于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或创建用于操纵动态调整阵列的结构和相关联的功能。



文章来源: Redeclare 2d array of BOOL type in iOS app