佚名通过本文主要向大家介绍了foreach循环的原理,foreach原理,java foreach原理,foreach和for的区别,foreach等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:foreach iOS的foreach执行原理
描述:
解决方案1:
描述:
我用for。。in的方式去遍历一个NSMutableArray,但是当遍历的时候,改变array,就会导致crash。看解释说是因为改变元素的时候,之前的元素全部被失效,但是想知道实现的具体原理。
解决方案1:
for in实际上是快速枚举,跟for循环意义上还是有区别的。
NSArray的枚举操作中有一条需要注意:对于可变数组进行枚举操作时,你不能通过添加或删除对象这类操作来改变数组容器。如果你这么做了,枚举器会很困惑,而你将得到未定义的结果。
而本身这种操作也是有问题的,数组容器已经改变,可能遍历到没有分配的位置,用for循环机器不能自己察觉,但是枚举器可以察觉。
这个错误(<__NSArrayM: 0xa4fc000> was mutated while being enumerated.)的意思是:枚举的过程中数组发生了突变
解决方案2:记得书上好像说的是为了安全,遍历的时候内部会转换成NSeArray操作吧。