Я предполагаю, что где-то в моем коде объекты в массиве удаляются быстрее, чем они создаются. Я искал проблему более часа, поэтому, пожалуйста, помогите!
Вот ошибка: *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSMutableArray objectAtIndex:]: index 7 beyond bounds [0 .. 6]'
Заранее спасибо и вот мой код:
- (void)onTimer {
UIImageView *imgView = [[UIImageView alloc] init];
imgView.image = particleImg;
imgView.frame = CGRectMake(kViewDimensions/2, kViewDimensions/2, startSize.width, startSize.height);
[self addSubview:imgView];
[particlesArray addObject:imgView];
[imgView release];
moveTimer = [NSTimer scheduledTimerWithTimeInterval:0.05 target:self selector:@selector(moveObjs) userInfo:nil repeats:YES];
}
- (void)moveObjs {
for (int i = 0; i < [particlesArray count]; i++) {
animID = @"MoveId";
UIImageView *imgV = [particlesArray objectAtIndex:i];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.3];
CGPoint randPoint = CGPointMake(arc4random()%kMaxRandX, arc4random()%kMaxRandY);
imgV.center = CGPointMake(randPoint.x, randPoint.y);
[UIView commitAnimations];
animValue = i;
num = [NSNumber numberWithInt:animValue];
[NSTimer scheduledTimerWithTimeInterval:0.3 target:self selector:@selector(animationEnded) userInfo:num repeats:NO];
NSLog(@"\n %d",animValue);
}
}
- (void)animationEnded {
int av = [num intValue];
UIImageView *iv = [particlesArray objectAtIndex:av];
if ([animID isEqualToString:@"MoveId"]) {
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.1];
iv.alpha = 0.0f;
[UIView commitAnimations];
[particlesArray removeObjectAtIndex:av];
}
else {
[iv removeFromSuperview];
}
}