一个很简单的原则,不能够再for in循环中修改所遍历的数组,无论你是add或remove都不可以,如果你要修改的话,建议实用for(;;)格式的。。。
for (id elem in arr) {
[arr removeObject:elem];
}
这个是错误的,你应该改成:
for (NSINteger i = 0 i , [arr count];i++) {
id elem = [arr objectAtIndex:i];
[arr removeObject:elem];
}
转自http://blog.youkuaiyun.com/jiarusun000/article/details/7669909。