我们想要删除数组中的符合条件的元素时,经常对数组进行遍历,然后删除。但是这其中更确隐藏着很大的问题。如果当初能够仔细的分析一下,也不会导致今天的错误了。
1.
2.
3.
4.
5.
6.
7.
8.
l
l
l
l
l
l
如果我们使用如下的循环方式:
- for (int i=0;i<[array count];i++) {
-
NSNumber *number = [array objectAtIndex:i]; -
CCLOG(@"number %d:%@ ",i,[number description]); -
if ([number intValue]==2||[number intValue]==1) { -
[array removeObject:number]; -
CCLOG(@"delete:%@ ",[number description]); -
} - }
l
l
l
l
l
- int num = [array count];
- for (int i=num-1;i>=0;i--) {
-
NSNumber *number = [array objectAtIndex:i]; -
CCLOG(@"number %d:%@ ",i,[number description]); -
if ([number intValue]==2||[number intValue]==1) { -
[array removeObjectAtIndex:i]; -
CCLOG(@"delete:%@ ",[number description]); -
} - }