was mutated while being enumerated

来源:互联网 发布:哥白尼式革命 知乎 编辑:程序博客网 时间:2024/05/24 03:37

翻译: "在枚举的时候发生了变化"

for...in...利用了快速枚举NSFastEnumerate,当我们想要改变数组变量中的数据或者删除数组中的数据的时候,不能用for...in...

Objective-C中的foreach循环与Java中的类似,在内部是用iterator(迭代器)实现遍历的。而不管是在Java还是C++中,一旦修改了被遍历对象,在修改前生成的iterator都会失效。
NSArray的枚举操作中有一条需要注意:对于可变数组进行枚举操作时,你不能通过添加或删除对象这类操作来改变数组容器。如果你这么做了,枚举器会很困惑,而你将得到未定义的结果。

解决办法:用for循环


0 0
原创粉丝点击