was mutated while being enumerate 这个错误

Jan 9, 2017

发表于(2016-11-30 10:38:14)

用for循环的(id object in array)这种方法,如果内部有调整操作,则会跳出来was mutated while being enumerate 这个错误。
面对这个崩溃,不知道从哪里入手。
其实可以这样理解,我要操作object对象,挪动它,那么势必会影响后面哥们的战队。扩展一下,我object在最后,是不是就不会崩溃了?是的,因为操作了就不影响有站错队的哥们了,他们全都有队可站。
这里有几个做法:

  1. for (int i=0;i<x;i++)
  2. [array enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { do something... *stop = YES; }];
  3. 或者操作完你这一个之后,break整个循环
    双击666