2013-04-30 71 views
1

我开发iPhone应用程序,我已经创建BOOL的2D阵列在我的公共接口在h文件这样重新声明在IOS应用BOOL类型的2D阵列

BOOL阵列[10] [10];

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

阵列[20] [20]

我怎样才能做到这一点?

+0

malloc/free ...搜索CCPointArray的cocos2d代码以获得想法 – LearnCocos2D 2013-04-30 17:32:53

回答

2

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

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

Objective-c syntax for 2d array instance variable

如果使用C数组,你必须自己管理内存,这样你就可以宣布一个指向

2d数组,如果需要更大的数组,则使用new,free,realloc和copy来分配内存。我不建议这种方法。

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或创建结构和相关功能。

+0

@Ultrakorne建议的实现看起来像适合您的需求,它允许您使用'table [i] [j]'语法。 – aLevelOfIndirection 2013-04-30 10:44:34