客观的c阵列布尔

时间:2011-11-11 18:17:56

标签: objective-c ios

我正在开发一款具有二维点的游戏,每个游戏都有一个布尔属性(占用/未占用)。我认为实现这一目标的最佳方法是创建一个简单的布尔数组。这比创建可变阵列更有效。我只是混淆了实现这一目标的最佳方法。问题是我在初始化电路板对象之前不知道电路板的大小。 界面如下所示:

@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改变。

实现这一目标的最佳方法是什么?

1 个答案:

答案 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 );