我们在使用 enumerateObject 或者 for in 等遍历方式对数组进行遍历时. 经常有需求是把其中某些元素给剔除, 或者在其中添加新元素.
一般, 不注意时, 会立马在遍历的block中进行操作, 当然, 这样不会立马报错, 程序也可能在一段时间内不崩溃. 但这是程序里的一个隐藏炸弹
这种情况下, 内部操作会导致, array 发生改变, 下一个idx也不准确了.
解决方法一般是:
第一: 使用可变数组保存, 然后利用可变数组或者源数组来遍历, 对应另一个数组在遍历内部进行操作.
第二, 使用NSMutableIndexSet, 将对应的idx 保存起来, 然后在遍历结束后再来进行总体的添加或删除.