Objective c 目标二维阵列?

Objective c 目标二维阵列?,objective-c,arrays,dynamic,multidimensional-array,Objective C,Arrays,Dynamic,Multidimensional Array,我在创建动态分配的二维数组时遇到了一些问题。如果有区别的话,我正在为ios编写代码 我对objective c有点陌生,这种语言的内存分配有点混乱。我做了一些研究,提出了NSMutableArray和这个链接,但仍然感到困惑 我要做的是创建一个行和列的列表,每一行包含动态创建的列对象数。行数也是动态的 如果你认为布局是一个散列图;从图形上看,每个哈希单元格将包含一个按钮和一个显示在屏幕上的标签 编辑: 我有 NSMutableArray *rows; NSMutableArray *column

我在创建动态分配的二维数组时遇到了一些问题。如果有区别的话,我正在为ios编写代码

我对objective c有点陌生,这种语言的内存分配有点混乱。我做了一些研究,提出了NSMutableArray和这个链接,但仍然感到困惑

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

如果你认为布局是一个散列图;从图形上看,每个哈希单元格将包含一个按钮和一个显示在屏幕上的标签

编辑:

我有

NSMutableArray *rows;
NSMutableArray *columns;

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

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

编辑2:


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

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


这有意义吗?实际上,您最终会得到一个数组。

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


这有意义吗?实际上,您最终得到的是一个数组。

您不能使用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进行比较时,它的工作速度非常快。
希望有帮助。

您不能使用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进行比较时,它的工作速度非常快。
希望有帮助。

在这里检查我的答案在这里检查我的答案这对字符串也有效吗?创建阵列后如何重新分配内存?它可能会再次出现。我对目标c不熟悉。对不起,重新分配内存是什么意思?您是要销毁该阵列并创建另一个阵列,还是要复制此阵列?你能举例说明你想做什么吗?您可以像objective-c对象一样使用它:S TwoDimCArray*数组=[[TwoDimCArray alloc]init];基本上增加尺寸。我正在从xml文件中读取对象列表。每个对象有2个标识符;组和子组(每个对象都是其自己的子组或列)。我解析文档中的信息,并从每个对象收集组和子组。此数组将保存对每个相应对象的字符串引用。因此,当我遇到一个对象时,我会在数组中循环,如果这个对象属于一个已经初始化的组,我会添加一个包含这个对象字符串的子组索引。如果没有与此匹配的组,请添加一个组。谷歌有很多教程可以调整c数组的大小。从什么时候开始,你不能在objective-c中创建二维数组了?请用证据支持这一陈述<代码>NSMUTABLEARRY*array=[[NSMUTABLEARRY alloc]initWithObjects:[NSMUTABLEARRY arrayWithObjects:@“1”,“2”,“3”,nil],[NSMUTABLEARRY arrayWithObjects:@“4”,“5”,“6”,nil]然后您可以执行'array[1][2]`操作,该操作将返回
6
。吊杆二维数组。这也适用于字符串吗?创建阵列后如何重新分配内存?它可能会再次出现。我对目标c不熟悉。对不起,重新分配内存是什么意思?您是要销毁该阵列并创建另一个阵列,还是要复制此阵列?你能举例说明你想做什么吗?您可以像objective-c对象一样使用它:S TwoDimCArray*数组=[[TwoDimCArray alloc]init];基本上增加尺寸。我正在从xml文件中读取对象列表。每个对象有2个标识符;组和子组(每个对象都是其自己的子组或列)。我解析文档中的信息,并从每个对象收集组和子组。此数组将保存对每个相应对象的字符串引用。因此,当我遇到一个对象时,我会在数组中循环,如果这个对象属于一个已经初始化的组,我会添加一个包含这个对象字符串的子组索引。如果没有与此匹配的组,请添加一个组。谷歌有很多教程可以调整c数组的大小。从什么时候开始,你不能在objective-c中创建二维数组了?请用证据支持这一陈述<代码>NSMUTABLEARRY*array=[[NSMUTABLEARRY alloc]initWithObjects:[NSMUTABLEARRY arrayWithObjects:@“1”,“2”,“3”,nil],[NSMUTABLEARRY arrayWithObjects:@“4”,“5”,“6”,nil]然后您可以执行'array[1][2]`操作,该操作将返回
6
。吊杆2维阵列。它确实有意义。我主要不知道如何在需要时“推送”新行,以及如何为每行“推送”新列对象。如果有帮助,我计划在每个列对象中存储一个URL字符串。普通数组(NSArray)创建后不能向其添加对象。因此,让我们假设您已经创建了这样的行数组:
NSMutableArray*newRow=[[NSMutableArray alloc]init]
通过调用
[newRow addObject:ColumnObjectToAdd]向其中添加新元素(列数据)。如果您提供了一些示例数据,我们可以向您展示一个工作示例,如果这有帮助的话。它确实有意义。我主要不知道如何在需要时“推送”新行,以及如何为每行“推送”新列对象。如果有帮助,我计划在每个列对象中存储一个URL字符串。普通数组(NSArray)创建后不能向其添加对象。因此,让我们假设您已经创建了这样的行数组:
NSMutableAr