for (int i = 0; i < [array count]; i++) { [array removeObjectAtIndex:i]; } 上面的遍历由于在remove操作之后array count的值也在不断改变,所以会导致无法完全删除元素. 正确的删除操作如下: for (id obj in array) { [array removeObject:obj]; } 如果你需要同时获得数组的索引,可以利用NSMutableIndexSet先保存需要删除的元素,遍历完成后统一删除 NSMutableIndexSet *indexSets = [[NSMutableIndexSet alloc] init]; for (int i = 0 ; i < [array count]; i++) { [indexSets addIndex:i]; } [array removeObjectsAtIndexes:indexSets]; |