在通讯录搜索时会不停的遍历数组源,获取匹配的用户信息用于展示,此时出现BUG。
报错:崩溃并报错“Collection <__NSArrayM: 0x166105d0> was mutated while being enumerated”。
原因1:数组遍历时修改了数组。解决方法:定义一个新数组,修改新数组
原因2:不同的线程同时读取和修改了数组。
解决方法:
[userList enumerateObjectsUsingBlock:^(id _Nonnull user, NSUInteger idx, BOOL * stop) {
}];
本文探讨了在通讯录搜索过程中遍历数组时修改数组引发的崩溃问题,并提供了两种解决方案:一是通过创建新数组来避免直接修改原数组;二是确保在单一线程中完成遍历与修改操作。
616

被折叠的 条评论
为什么被折叠?



