我正在开发一款具有二维点板的游戏,每个点都有一个 bool 属性(占用/未占用)。我在想实现这一点的最佳方法是创建一个简单的 c bool 值数组。这将比创建可变数组更有效。我只是对实现这一目标的最佳方法感到困惑。问题是在初始化板对象之前我不知道板的大小。
界面如下所示:
@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;
}
麻烦的是,在界面中,如果我尝试用动态数量的索引声明点变量,点 [] [],它只会给我一个错误。
显然,在对象初始化之前我不知道数组的大小,但在那之后它不会改变,只有它的元素会从真/假改变。
实现这一目标的最佳方法是什么?
最佳答案
在您的界面中,声明:
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 );
关于objective-c - objective-c bool 值数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8098218/