您的位置:首页 > 运维架构

Obj-C: (loop) 优雅的for...in loop

2012-09-29 09:40 429 查看



Obj-C: (loop) 优雅的for...in loop

早期的Objective-C, 遍历一个容器类(NSArray, NSSet, NSDictionary)的方式是这样的:

如果是一个有序容器, 比如NSArray, 还可以使用C-style for loop:

可如果是NSSet这种无序容器, 就只能使用前一种了

------------------------------------------ 2.0时代的分割线 ------------------------------------------

Objective-C 2.0引入了for...in loop, 极大简化了遍历操作,

用for...in loop遍历一个NSArray:

甚至可以简化成:

当用for...in loop来遍历NSDictionary时, 每次返回的是一个key:

在遍历一个容器类的同时, 是不能删除, 增加其中的元素的,

for...in loop引入了 Mutation Guard的机制, 运行时抛出异常:

Collection was mutated while being enumerated

但如果我们真的需要遍历时删除怎么办? 解决方案之一是遍历一个容器的拷贝:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐