十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
最近在做一个应用时,测试时发现一个我写的控制器控制节点出现了问题,开始报NSGenericException错误,日志报的原因时迭代遍历元素时,元素被改变了,一开始我认为是线程同步出了问题,所以把迭代过程用线程锁保护了起来,但是发现问题依旧,然后开始不停查资料,最终发现问题居然在控制器为节点发消息的循环上。
为贺兰等地区用户提供了全套网页设计制作服务,及贺兰网站建设行业解决方案。主营业务为成都网站设计、成都网站建设、贺兰网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
原因就在这 "foreach",它的内部遍历使用了类似 Iterator进行迭代遍历,一旦元素变动,之前的元素全部被失效,所以在foreach的循环当中,最好不要去进行元素的修改动作,若需要修改,循环改为for遍历,由于内部机制不同,不会产生修改后结果失效的问题。
总结一下:遍历元素时,若需要修改原元素,不要使用foreach,而使用for循环。