客观的c阵列布尔

ecb*_*tln 1 objective-c ios

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

@interface TouchBoard : NSObject{
NSInteger height,width;
BOOL dots[10][10];

}
Run Code Online (Sandbox Code Playgroud)

和这样的实现:

-(id)initWithHeight:(NSInteger)rows Width:(NSInteger)columns{
    if ( self = [super init]){
        height = rows;
        width = columns;
        dots[height][width];
    }
    return self;

}
Run Code Online (Sandbox Code Playgroud)

麻烦的是,在界面中,如果我试图用动态数量的索引,点[] []声明点变量,它只会给我一个错误.显然,在初始化对象之前,我不知道数组的大小,但在此之后它不会改变,只有它的元素才会从true/false改变.

完成此任务的最佳方法是什么?

Mac*_*ade 6

在您的界面中,声明:

BOOL ** dots;
Run Code Online (Sandbox Code Playgroud)

然后,您需要使用malloc,动态分配内存:

int i;

dots = malloc( rows * sizeof( BOOL * ) );

for( i = 0; i < rows; i++ )
{
    dots[ i ] = calloc( columns, sizeof( BOOL ) );
}
Run Code Online (Sandbox Code Playgroud)

不要忘记在你的dealloc方法中释放:

int i;

for( i = 0; i < rows; i++ )
{
    free( dots[ i ] );
}

free( dots );
Run Code Online (Sandbox Code Playgroud)