Objective c 多维NSArray对象

Objective c 多维NSArray对象,objective-c,multidimensional-array,nsarray,Objective C,Multidimensional Array,Nsarray,是否有一种方法可以创建二维NSArray,而不必以原始格式aFloatArray[]嵌套数组 谢谢。不幸的是没有。要创建多维NSArray,请执行以下操作: NSArray *multiArray = [NSArray arrayWithObjects: [NSMutableArray array], [NSMutableArray array], [NSMutableArray array], [NSMutableArray array], nil]; //

是否有一种方法可以创建二维NSArray,而不必以原始格式aFloatArray[]嵌套数组


谢谢。

不幸的是没有。要创建多维NSArray,请执行以下操作:

NSArray *multiArray = [NSArray arrayWithObjects:
    [NSMutableArray array],
    [NSMutableArray array],
    [NSMutableArray array],
    [NSMutableArray array], nil];

// Add a value
[[multiArray objectAtIndex:1] addObject:@"foo"];

// get the value
NSString *value = [[multiArray objectAtIndex:1] objectAtIndex:0];
但是,您可以在Objective-C中使用C代码(因为它是C的严格超集),如果它符合您的需要,您可以按照建议声明数组。

您可以这样做:

NSArray *array = @[@[@"0:0", @"0:1"],
                   @[@"1:0", @"1:1"]];

NSString *value = array[1][0];
我认为这比“objectAtIndex”的东西要短得多


但请注意,您已使用Apple LLVM编译器版本>=4.0

在集合或TableView CellForRowatineXpath的多维数组中插入对象:

NSString *sectionRow = [NSString stringWithFormat:@"%d:%d", indexPath.section, indexPath.row];                
[dictionary setValue:[UIImage imageWithData:imageData] forKey:sectionRow];
NSString *sectionRow = [NSString stringWithFormat:@"%d:%d", indexPath.section, indexPath.row];    
UIImage *cellImage = [dictionary valueForKey:sectionRow];
要从集合或TableView CellForRowatineXpath中的多维数组中检索对象,请执行以下操作:

NSString *sectionRow = [NSString stringWithFormat:@"%d:%d", indexPath.section, indexPath.row];                
[dictionary setValue:[UIImage imageWithData:imageData] forKey:sectionRow];
NSString *sectionRow = [NSString stringWithFormat:@"%d:%d", indexPath.section, indexPath.row];    
UIImage *cellImage = [dictionary valueForKey:sectionRow];

你需要完成什么?也许还有其他方法更适合您正在解决的问题。如果您没有使用垃圾收集,那么您正在泄漏
多数组中的每个数组。要修复此问题,请使用
[NSMutableArray]
。真的吗?据我所知,[NSMutableArray]返回了一个自动删除的NSMutableArray,它将被添加到的NSArray保留!我会查清楚的,因为如果你是对的,我有很多代码要处理。关键是,自动释放的对象被添加到的数组保留。释放父数组时,其内容也会释放。如果将
[NSMutableArray new]
添加到数组中,其保留计数将变为
2
。释放父阵列时,其每个子阵列的保留计数仍为
1
。请尽量避免考虑保留计数。这往往会产生误导。只考虑对象的所有权。由于您使用new获得了四个阵列中的每一个,因此您负责发布它们。你不能那样做。可能的解决方案:将[NSMutableArray new]更改为[[NSMutableArray new]autorelease]或[NSMutableArray]或使用垃圾收集(iPhone上没有选项)。哎呀,我现在意识到我误读了Dave的评论。无论如何,谢谢你的回答:)我很困惑,因为我不知道NSObject有一个“新”的类方法,我假设它类似于NSArray的“数组”方法。这绝对是现代的方法。