<__NSArrayM: 0x17425f440> was mutated while being enumerated.

这类错是因为:

当程序出现这个提示的时候,是因为你一边便利数组,又同时修改这个数组里面的内容,导致崩溃。此时我们可以采用block遍历里的stop解决。通过满足条件后,暂停循环再删除数组里的元素:

错误代码:

for (UISwitch * tempswitch in self.switchArr) {

  if (tempswitch.tag == switchFunc.tag) {

  [self.switchArr removeObject:tempswitch];

 }

}


用block遍历后的代码:

[self.switchArrenumerateObjectsUsingBlock:^(id_Nonnullobj,NSUIntegeridx,BOOL*_Nonnullstop) {

UISwitch* tempswitch = obj;

if(tempswitch.tag== switchFunc.tag) {

*stop =YES;

if(*stop ==YES) {

[self.switchArrremoveObject:tempswitch];

}

}

}];

你可能感兴趣的:(<__NSArrayM: 0x17425f440> was mutated while being enumerated.)