我有2个NSMutableArrays,我想将某个对象形式1数组放到我已编写代码的另一个数组中,但它不起作用,它给了我这个错误: *由于未捕获的异常'NSRangeException'而终止应用程序,原因:'* - [__ NSArrayM objectAtIndex:]:索引296超出边界[0 .. 295]' * 第一次抛出调用堆栈: (0x1c9a012 0x10d7e7e 0x1c3c0b4 0x2f04 0xb20b90 0x1c59376 0x1c58e06 0x1c40a82 0x1c3ff44 0x1c3fe1b 0x1bf47e3 0x1bf4668 0x1f65c 0x252d 0x2455) libc ++ abi.dylib:terminate调用抛出异常
viewdidload中的Initialisierung:
arrayLine1 =[[NSMutableArray alloc] initWithCapacity:80000];
arrayLine1a =[[NSMutableArray alloc] initWithCapacity:70000];
line1tagzahl=0;
line1tagzahl2=0;
传递代码:
for (int a=0; a<10; ) {
[arrayLine1a insertObject:[arrayLine1 objectAtIndex:line1tagzahl2] atIndex:line1tagzahl2];
line1tagzahl2=line1tagzahl2+1;
a=a+1;
}
用于在数组中创建对象的函数(此函数被非常快速且频繁地调用):
for (float a=0; a<0.8; ) {
UIImageView *line1 =[[UIImageView alloc] initWithFrame:CGRectMake(Startpoint1.center.x-(w/2),Startpoint1.center.y-kurve1yf+a,w,h)];
line1.image=[UIImage imageNamed:@"Unbenannt"];
line1.tag=line1tagzahl;
[self.view addSubview:line1];
[arrayLine1 insertObject:line1 atIndex:line1tagzahl];
line1tagzahl=line1tagzahl+1;
a=a+0.1;
}
现在您应该有更多信息
答案 0 :(得分:0)
如果你问我在array2中有超过10个对象
好像您还没有看过您发布的错误消息。数组中有296个对象。但是如果你只是想复制数组,你为什么不......呃......复制它?
NSMutableArray *secondArray = [firstArray mutableCopy];
答案 1 :(得分:0)
使用NSMutableArray类的默认方法-addObjectsFromArray:
有什么问题吗?
- (void)serverGotResponse:(NSArray *)objects {
[_myMutableArray addObjectsFromArray:objects];
}
答案 2 :(得分:0)
要防止越界异常,您应该使用count
属性:
while (i < array.count) {
// do something ..
i++;
}
如果要复制所有对象,则可以复制整个数组:
array2 = [array1 copy]
答案 3 :(得分:-1)
您正在尝试添加前10个对象,但您的异常是在索引296上抛出的,这是第一个超出范围的索引。
出于某种原因,您的while
条件无法正常工作,所以我建议您开始寻找
我还建议您使用for
,它实际上比潜在的无限循环更简单明了
for (int a = 0; a < 10; a++) {
[array1 insertObject:[array2 objectAtIndex:a] atIndex:a];
}