我有一個名爲imgBall的NSArray,它包含一個臨時變量名稱imgView,它在用戶觸摸屏幕上的一個點時在屏幕上顯示圖像。iOS:刪除由NSArray創建的UIImageView實例?
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
UIImageView *imgView = [[UIImageView alloc] initWithFrame:CGRectMake(40, 40, 40, 40)];
imgView.image = [UIImage imageNamed:@"ball.png"];
[self.view addSubview:imgView];
imgView.center = [myTouch locationInView:self.view];
[imgBall addObject:imgView];
}
用戶可以通過觸摸屏幕上的任何位置來創建多個實例。可能意味着陣列中有5個,10個或20個不同的球。
現在,我有一個按鈕,需要'清除'屏幕並刪除imgView的所有實例。 我曾嘗試以下:
for (UIImageView *imgView in imgBall) {
[self.view removeFromSuperview:imgView];
}
和
for (UIImageView *imgView in imgBall) {
[imgBall removeObject:imgView];
}
但他們都產SIGABRT並拋出異常:
Terminating app due to uncaught exception 'NSGenericException', reason:
'*** Collection <__NSArrayM: 0x735f4a0> was mutated while being enumerated.'
我可以做到這一點有什麼辦法沒有得到SIGABRT每個拋出的時間?
哇哦,我簡直不敢相信我甚至沒有想到這一點。謝謝! – nworksdev 2012-07-18 19:17:18
@nworksdev您也可以在刪除所有UIImageView後調用'[imgBall removeAllObjects]'。 – Anthony 2012-07-18 19:17:26
明白了,我正想問這個。謝謝! – nworksdev 2012-07-18 19:20:05