多维NSArray对象

Fat*_*ojo 9 objective-c multidimensional-array nsarray

有没有办法创建二维NSArray而不用原始格式aFloatArray [] []嵌套数组.

谢谢.

pix*_*xel 17

不幸的是.要创建多维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];
Run Code Online (Sandbox Code Playgroud)

但是,您可以在Objective-C中使用C代码(因为它是C的严格超集),如果它符合您的需要,您可以按照建议声明数组.

  • 如果您没有使用垃圾收集,那么您将泄漏`multiArray`中的每个数组.要修复,请使用`[NSMutableArray array]`. (6认同)
  • 尽量避免考虑保留计数.这通常会产生误导.只考虑对象的所有权.由于您使用new获取了四个数组中的每一个,因此您负责释放它们.你不这样做.可能的解决方案:将[NSMutableArray new]更改为[[NSMutableArray new] autorelease]或[NSMutableArray array]或使用垃圾收集(不是iPhone上的选项). (2认同)

Cha*_*aka 12

你可以这样做:

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

NSString *value = array[1][0];
Run Code Online (Sandbox Code Playgroud)

我认为这比"objectAtIndex"的东西短得多.

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