我正在制作一个具有二维点的游戏,每个游戏都有一个布尔属性(占用/未占用).我认为实现这一目标的最佳方法是创建一个简单的布尔数组.这比创建可变阵列更有效.我只是混淆了实现这一目标的最佳方法.问题是我在初始化电路板对象之前不知道电路板的大小.界面如下所示:
@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改变.
完成此任务的最佳方法是什么?
在您的界面中,声明:
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)
| 归档时间: |
|
| 查看次数: |
2645 次 |
| 最近记录: |