iOS之《Effective Objective-C 2.0》读书笔记(48)
来源:互联网 发布:linux修改ip配置文件 编辑:程序博客网 时间:2024/05/18 07:15
第48条:多用块枚举,少用for循环
1.基本的for循环
NSArray *array = /*...*/; for (int i = 0; i < anArray.count; i++) { id object = anArray[i]; //Do something with 'object' }
2.NSEnumerator遍历法
- 正向遍历
NSArray *anArray = /* ... */; NSEnumerator *enumerator = [anArray objectEnumerator]; id object; while ((object = [enumerator nextObject]) != nil) { // Do something with 'object' }
- 反向遍历
NSArray *anArray = /* ... */; NSEnumerator *enumerator = [anArray reverseObjectEnumerator]; id object; while ((object = [enumerator nextObject]) != nil) { // Do something with 'object' }
3.快速遍历
NSArray *anArray = /* ... */; for (id object in anArray) { // Do something with 'object' }
4.块枚举法
- 这个块有三个参数,分别是当前迭代所针对的对象、所针对的下标,以及指向布尔值的指针。前两个参数的含义不言而喻。而通过第三个参数所提供的机制,开发者可以终止遍历操作
//1>NSArray NSArray *anArray = /* ... */; [anArray enumerateObjectsUsingBlock:^(id object, NSUInteger idx, BOOL *stop) { // Do something with 'object' if (shouldStop) { *stop = YES; } }];//2>Dictionary NSDictionary *aDictionary = /* ... */; [aDictionary enumerateKeysAndObjectsUsingBlock:^(id key, id object, BOOL *stop) { // Do something with 'key' and 'object' if (shouldStop) { *stop = YES; } }];//3>Set NSSet *aSet = /* ... */; [aSet enumerateObjectsUsingBlock:^(id object, BOOL *stop) { // Do something with 'object' if (shouldStop) { *stop = YES; } }];
- 用此方式也可以执行反向遍历
- (void)enumerateObjectsWithOptions:(NSEnumerationOptions)options usingBlock:(void(^)(id obj, NSUInteger idx, BOOL *stop))block;- (void)enumerateKeysAndObjectsWithOptions:(NSEnumerationOptions)options usingBlock: (void(^)(id key, id obj, BOOL *stop))
阅读全文
0 0
- iOS之《Effective Objective-C 2.0》读书笔记(48)
- <iOS读书笔记>之Effective Objective-C 2.0
- iOS之《Effective Objective-C 2.0》读书笔记(1)
- iOS之《Effective Objective-C 2.0》读书笔记(2)
- iOS之《Effective Objective-C 2.0》读书笔记(3)
- iOS之《Effective Objective-C 2.0》读书笔记(4)
- iOS之《Effective Objective-C 2.0》读书笔记(5)
- iOS之《Effective Objective-C 2.0》读书笔记(6)
- iOS之《Effective Objective-C 2.0》读书笔记(7)
- iOS之《Effective Objective-C 2.0》读书笔记(8)
- iOS之《Effective Objective-C 2.0》读书笔记(9)
- iOS之《Effective Objective-C 2.0》读书笔记(10)
- iOS之《Effective Objective-C 2.0》读书笔记(11)
- iOS之《Effective Objective-C 2.0》读书笔记(12)
- iOS之《Effective Objective-C 2.0》读书笔记(13)
- iOS之《Effective Objective-C 2.0》读书笔记(14)
- iOS之《Effective Objective-C 2.0》读书笔记(16)
- iOS之《Effective Objective-C 2.0》读书笔记(17)
- WPF深入浅出之我见
- java中继承的初始化顺序
- oracle11g 监听日志过大处理
- Sftp只允许用户访问指定的目录
- POJ 2559 Largest Rectangle in a Histogram(单调栈)
- iOS之《Effective Objective-C 2.0》读书笔记(48)
- Spark 集群搭建从零开始之2 Spark单机伪分布式安装与配置
- phpcmsv9调用友情链接
- android GPS API
- [tensorflow]tensorflow ConfigProto
- 使用 jquery 获取一组或者单个 checkbox 的选中状态的值
- NAT详解
- 设计模式六大原则(3):依赖倒置原则
- 关于安卓glide图片框架加载的图片转换成圆形圆角的思路