客观c二维数组?

时间:2013-12-10 15:35:44

标签: objective-c arrays dynamic multidimensional-array

我在创建动态分配的二维数组时遇到了一些麻烦。如果它有所作为,我正在为ios编码。

我对目标c有点新,而且这种语言的内存分配有点令人困惑。我做了一些研究并想出了NSMutableArray和这个链接,2D arrays using NSMutableArray,但我仍然感到困惑。

我要做的是创建一个行和列的列表,每行包含动态创建的列对象数。行数也是动态的。

如果您将布局视为哈希映射;以图形方式,每个哈希单元格将包含一个按钮和屏幕上显示的标签。

编辑:

我有,

NSMutableArray *rows;
NSMutableArray *columns;

- (void)viewDidLoad {
    rows = [[NSMutableArray alloc] init];
    columns = [[NSMutableArray alloc] init];

    //allocate memory?
}

我的主要问题是如何为每个条目分配内存?

EDIT2:

如果有人需要帮助,我得到了答案并且更多地看了字典而不是数组,他们有很多有用的方法。

2 个答案:

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

所以你需要创建一个包含所有行的数组。然后,对于每一行,您需要创建一个新数组来保存该行的数据,此数组中的元素数是该行的列数。

这有意义吗?你最终会得到一个数组数组。