oc for in遍历

简介:

在oc中用for in遍历可变数组时,不能修改删除新增元素,因为for in遍历是枚举遍历,在遍历的过程中不能修改容器里的值。



NSMutableArray *arr=[NSMutableArray arrayWithObjects:@"1",@"2",@"3", nil];

    for (NSString *str in arr) {

        if ([str isEqualToString:@"1"]) {

           [arr addObject:@"4"];

        }

    }

错误:

 reason: '*** Collection <__NSArrayM: 0x7fa2b8449220> was mutated while being enumerated.'

那如果这样为什么View遍历subview子视图removeFromSurperview时,为什么没有报错呢?

一旦将UIView对象的subview removeFromSurperview之后,UIView对象的subviews数组,居然连整个对象都不同了(从对象指针可以看出来)

参考:http://www.cocoachina.com/bbs/read.php?tid=264935




相关文章
YI
|
9月前
|
存储 Go
LeetCode 0203.移除链表元素【Go】
LeetCode 0203.移除链表元素【Go】
YI
53 0
OC-字符串.数组.字典.集合
OC-字符串.数组.字典.集合
92 0
|
XML 数据格式