IOS:NSMutableArray initWithCapacity

| 我有这种情况
array = [[NSMutableArray alloc] initWithCapacity:4]; //in viewDidLoad

if (index == 0){
    [array insertObject:object atIndex:0];
}

if (index == 1){
    [array insertObject:object atIndex:1];
}

if (index == 2){
    [array insertObject:object atIndex:2];
}

if (index == 3){
    [array insertObject:object atIndex:3];
}
但是如果我按顺序插入对象就可以了,而是如果我按以下顺序填充数组:0和3之后,它不能正常工作,为什么???     
已邀请:
即使对象的容量为4,也无法在insert1 insert的索引3处插入对象。可变数组具有的可用“单元格”数量与对象中的数量一样多。如果要在可变数组中包含“空单元格”,则应使用2个对象。这是一个特殊的存根对象,在这里意味着没有数据。
NSMutableArray *array = [[NSMutableArray alloc] init];

for (NSInteger i = 0; i < 4; ++i)
{
     [array addObject:[NSNull null]];
}

[array replaceObjectAtIndex:0 withObject:object];
[array replaceObjectAtIndex:3 withObject:object];
    
在C样式中,
int a[10]
创建大小为10的数组,您可以按任何顺序访问从
0
9
的任何索引。但是,
initWithCapacity
arrayWithCapacity
并非如此。这只是底层系统可以用来提高性能的提示。这意味着您不能插入乱序。如果您有一个大小为n的可变数组,则只能从索引
0
n
插入,
0
n-1
是现有位置,
n
是在末端位置插入。因此0、1、2、3是有效的。但是0、3或1,2的顺序无效。     
您不能在任何随机索引处插入,如果要执行此操作,请先使用空对象初始化数组,然后调用replaceObjectAtIndex。     
您首先不能插入,例如在索引0处插入,然后在索引2处必须逐茎插入0,1,2,3,4,5 .....,n,您想做什么? ?你有什么问题 ??? 您可以尝试创建一个数组,然后使用零个项目对其进行初始化,然后将其插入其中!我认为它将起作用!     

要回复问题请先登录注册