Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为iPhone开发初始化多维NSArray_Iphone_Objective C_Memory Management_Multidimensional Array_Nsarray - Fatal编程技术网

为iPhone开发初始化多维NSArray

为iPhone开发初始化多维NSArray,iphone,objective-c,memory-management,multidimensional-array,nsarray,Iphone,Objective C,Memory Management,Multidimensional Array,Nsarray,我从iPhone开发开始,需要使用多维数组 我使用以下命令初始化它: NSArray *multi=[NSArray arrayWithObjects:[NSMutableArray arrayWithCapacity:13], [NSMutableArray array],nil]; 但当我尝试像这样给第n个单元格赋值时: [[multi objectAtIndex:4] addObject:@"val"]; 应用程序挂起,因为索引4超出了范围[0..1] 初

我从iPhone开发开始,需要使用多维数组

我使用以下命令初始化它:

NSArray *multi=[NSArray 
  arrayWithObjects:[NSMutableArray arrayWithCapacity:13],
  [NSMutableArray array],nil];
但当我尝试像这样给第n个单元格赋值时:

[[multi objectAtIndex:4] addObject:@"val"];
应用程序挂起,因为索引
4
超出了范围
[0..1]


初始化多重数组的正确方法是什么?提前感谢并致以问候。

您所做的是创建一个包含两个对象的数组:两个其他数组。实际上,你要求的是这个“超级数组”中的第五个对象,它不起作用,因为没有


顺便说一下,即使您创建了一个指定容量的数组,它仍然是空的。指定容量只会为数组分配足够的内存,以容纳至少给定数量的对象。如果你不添加任何对象,那么如果你请求第10个对象,你的应用程序仍然会崩溃。

你所做的是创建一个包含两个对象的数组:另外两个数组。实际上,你要求的是这个“超级数组”中的第五个对象,它不起作用,因为没有


顺便说一下,即使您创建了一个指定容量的数组,它仍然是空的。指定容量只会为数组分配足够的内存,以容纳至少给定数量的对象。如果您不添加任何对象,那么如果您请求(例如)第10个对象,您的应用程序仍然会崩溃。

我想您应该创建一个NSMutableArray的NSMutableArray:

NSMutableArray *multi = [NSMutableArray arrayWithCapacity: 13];
for (int i = 0; i != 13; i++)
{
    NSMutableArray *array = [NSMutableArray arrayWithCapacity: 10];
    [multi insertObject: array atIndex: 0];
}
在那之后,你的电话是有效的


编辑:作为旁注,容量!=计数,如果您知道的话,在.NET或C++的STL中也是如此。

我想您应该创建一个NSMutableArray的NSMutableArray:

NSMutableArray *multi = [NSMutableArray arrayWithCapacity: 13];
for (int i = 0; i != 13; i++)
{
    NSMutableArray *array = [NSMutableArray arrayWithCapacity: 10];
    [multi insertObject: array atIndex: 0];
}
在那之后,你的电话是有效的

编辑:作为旁注,容量!=计数,如果您知道这些,在.NET或C++的STL中也是如此