主页 > 游戏开发  > 

iOSfor...in循环

iOSfor...in循环
0x00 循环遍历一

输出结果是什么?

NSMutableArray *marr = @[@1, @2, @3].mutableCopy; for (NSNumber *number in marr) { NSLog(@"%@", number); marr = @[@4, @5, @6].mutableCopy; } NSLog(@"%@", marr);
0x01 循环遍历二

输出结果是什么?

NSMutableArray *marr = @[@1, @2, @3].mutableCopy; for (NSNumber *number in marr) { NSLog(@"%@", number); [marr addObject:@4]; } NSLog(@"%@", marr);
0x02 循环遍历三

输出结果是什么?

var arr = [1, 2, 3] for number in arr { print(number) arr = [4, 5, 6] } print(arr)
0x03 循环遍历四

输出结果是什么?

var arr = [1, 2, 3] for number in arr { print(number) arr.append(4) } print(arr)
0x04 答案

循环遍历一,输出: 1 2 3 ( 4, 5, 6 )


循环遍历二: 打印 1 后,崩溃: *** Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <__NSArrayM: 0x60000075c3c0> was mutated while being enumerated.'


循环遍历三,输出: 1 2 3 [4, 5, 6]


循环遍历四,输出: 1 2 3 [1, 2, 3, 4, 4, 4]


0x05 结论

for…in 循环过程中,OC 不能修改集合,Swift 可以修改 直接改变指向,都没问题!

特性Objective-CSwift集合类型类对象(NSArray、NSMutableArray)值类型(Array、Dictionary)内存管理引用计数(ARC)值类型(栈内存),引用类型(ARC)枚举行为快速枚举,修改集合会导致崩溃基于迭代器协议,值类型修改不影响枚举修改集合的影响直接修改集合会导致崩溃值类型修改不影响枚举,引用类型可能崩溃
标签:

iOSfor...in循环由讯客互联游戏开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“iOSfor...in循环