iOS之《Effective Objective-C 2.0》读书笔记(48)
2017-09-19 09:37
393 查看
第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))
相关文章推荐
- iOS之《Effective Objective-C 2.0》读书笔记(9)
- iOS之《Effective Objective-C 2.0》读书笔记(43)
- iOS-Effective Objective-C 2.0 读书笔记(一)
- iOS之《Effective Objective-C 2.0》读书笔记(51)
- iOS之《Effective Objective-C 2.0》读书笔记(24)
- iOS之《Effective Objective-C 2.0》读书笔记(12)
- iOS之《Effective Objective-C 2.0》读书笔记(14)
- iOS之《Effective Objective-C 2.0》读书笔记(22)
- iOS之《Effective Objective-C 2.0》读书笔记(28)
- iOS之《Effective Objective-C 2.0》读书笔记(45)
- iOS之《Effective Objective-C 2.0》读书笔记(2)
- iOS之《Effective Objective-C 2.0》读书笔记(11)
- iOS之《Effective Objective-C 2.0》读书笔记(41)
- iOS之《Effective Objective-C 2.0》读书笔记(16)
- 《Effective Objective C 2.0 编写高质量iOS与OS X代码的52个有效方法》读书笔记
- iOS之《Effective Objective-C 2.0》读书笔记(50)
- iOS之《Effective Objective-C 2.0》读书笔记(46)
- 《Effective Objective-C 2.0 编写高质量iOS与OS X代码的52个有效方法》--读书笔记
- iOS之《Effective Objective-C 2.0》读书笔记(10)
- iOS之《Effective Objective-C 2.0》读书笔记(1)