我在创建动态分配的二维数组时遇到了一些麻烦。如果它有所作为,我正在为ios编码。
我对目标c有点新,而且这种语言的内存分配有点令人困惑。我做了一些研究并想出了NSMutableArray和这个链接,2D arrays using NSMutableArray,但我仍然感到困惑。
我要做的是创建一个行和列的列表,每行包含动态创建的列对象数。行数也是动态的。
如果您将布局视为哈希映射;以图形方式,每个哈希单元格将包含一个按钮和屏幕上显示的标签。
编辑:
我有,
NSMutableArray *rows;
NSMutableArray *columns;
- (void)viewDidLoad {
rows = [[NSMutableArray alloc] init];
columns = [[NSMutableArray alloc] init];
//allocate memory?
}
我的主要问题是如何为每个条目分配内存?
EDIT2:
如果有人需要帮助,我得到了答案并且更多地看了字典而不是数组,他们有很多有用的方法。
答案 0 :(得分:4)
您不能使用objective-c创建二维数组,但可以使用c样式数组,例如:
@implementation TwoDimCArray
{
NSUInteger _array[8][8];
}
- (id)init
{
if (self = [super init]){
[self clearArray];
}
return self;
}
- (int)cellStateAtColumn:(NSInteger)column andRow:(NSInteger)row
{
return _array[column][row];
}
- (void)setCellState:(BoardCellState)state forColumn:(NSInteger)column andRow:(NSInteger)row
{
_array[column][row] = state;
}
- (void) clearArray
{
memset(_array, 0, sizeof(NSUInteger) * 8 * 8);
}
@end
将它与嵌入在另一个NSArray中的NSArray进行比较时,它的工作速度非常快。 希望它有所帮助。
答案 1 :(得分:2)
所以你需要创建一个包含所有行的数组。然后,对于每一行,您需要创建一个新数组来保存该行的数据,此数组中的元素数是该行的列数。
这有意义吗?你最终会得到一个数组数组。