NSMutableArray遍历删除注意事项

 
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];

猜你喜欢

转载自www.cnblogs.com/henusyj-1314/p/9613820.html