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




相关文章
|
安全 Java
【JavaDS】栈与集合Stack的理解和使用
【JavaDS】栈与集合Stack的理解和使用
126 0
【JavaDS】栈与集合Stack的理解和使用
|
存储 iOS开发
OC的类信息存放在哪里,看完千万别说还不知道
这篇行文主要介绍OC的类信息具体存放在哪个位置。在了解这个之前,要先明白 Objective-C中的对象(后称OC对象),主要可以分为哪几种,如下: 1、instance对象(实例对象) 2、class对象(类对象)-https://so.csdn.net/so/search?q=%E7%B1%BB%E5%AF%B9%E8%B1%A1&spm=1001.2101.3001.7020 3、meta-class对象(元类对象)
288 0
OC的类信息存放在哪里,看完千万别说还不知道
|
iOS开发 C++
几个示例带你去了解OC对象是怎么分配内存的
1、64位系统环境的OC对象最小分配内存为16字节。 2、结构体内存对齐,是指在计算结构体大小的时候,其分配的原则:结构体大小必须是最大成员变量分配内存的倍数。 3、iOS操作系统在分配内存的时候,也有内存对齐的概念,为16的倍数 :在iOS的堆空间中,如果要创建一个OC对象,分配内存时,都是16的倍数。
214 0
OC-字符串.数组.字典.集合
OC-字符串.数组.字典.集合
122 0
|
XML 数据格式