我的程序运行时,我偶尔会出现错误。大多数时候,应用程序运行正常,但是应用程序会不时崩溃并指向for循环中的第二行说:
由于未捕获的异常'NSGenericException'而终止应用程序,原因:' * 收集在枚举时发生了变异。'
for(int i = 1; i <= 121; i++) {
NSLog(@"%i", i);
[(UIButton *)[self.view viewWithTag:i] setImage:[UIImage imageNamed:@"hexagon"] forState:UIControlStateNormal];
}
我该怎么做才能避免我的程序崩溃?
答案 0 :(得分:0)
在循环遍历数组时,您正尝试更改数组中的项目。
尝试制作子视图的副本以进行循环播放,以便您可以更改原始视图。
NSArray *loopingArray = [self.view.subviews copy];
for (int i = 0; i < [loopingArray count]; i++){
NSLog(@"%i", i);
if ([self.view viewWithTag:i])
[(UIButton *)[self.view viewWithTag:i] setImage:[UIImage imageNamed:@"hexagon"] forState:UIControlStateNormal];
}