我正在开发一款具有二维点的游戏,每个游戏都有一个布尔属性(占用/未占用)。我认为实现这一目标的最佳方法是创建一个简单的布尔数组。这比创建可变阵列更有效。我只是混淆了实现这一目标的最佳方法。问题是我在初始化电路板对象之前不知道电路板的大小。 界面如下所示:
@interface TouchBoard : NSObject{
NSInteger height,width;
BOOL dots[10][10];
}
这样的实现:
-(id)initWithHeight:(NSInteger)rows Width:(NSInteger)columns{
if ( self = [super init]){
height = rows;
width = columns;
dots[height][width];
}
return self;
}
麻烦的是,在界面中,如果我尝试使用动态索引数点[dot [] []声明点变量,它只会给我一个错误。 显然我在初始化对象之前不知道数组的大小,但在此之后它不会改变,只有它的元素才会从true / false改变。
实现这一目标的最佳方法是什么?
答案 0 :(得分:6)
在您的界面中,声明:
BOOL ** dots;
然后,您需要使用malloc
来动态分配内存:
int i;
dots = malloc( rows * sizeof( BOOL * ) );
for( i = 0; i < rows; i++ )
{
dots[ i ] = calloc( columns, sizeof( BOOL ) );
}
不要忘记释放你的dealloc方法:
int i;
for( i = 0; i < rows; i++ )
{
free( dots[ i ] );
}
free( dots );