ios 遍历方式
2016-03-24 10:33
423 查看
在开发的过程中,我们经常对数组,字典,以及一些其他的集合进行遍历,ios也给我们提供各种各样的遍历方式,现在我就简单列几种遍历方式
以上几种遍历方式,各自都有优缺点,大家在开发的过程中,根据需求择优选择,希望对大家有所帮助。
/** * 使用 NSEnumerator 遍历 */ - (void)test1 { NSArray *arrayM = @[@"A",@"B",@"C",@"D",@"E"]; NSEnumerator *arrayEmt = [arrayM objectEnumerator]; NSString *obj; while ((obj = [arrayEmt nextObject]) != nil) { NSLog(@"obj-----%@-----",obj); } NSSet *setM = [[NSSet alloc] initWithObjects:@"one",@"two",@"three",@"four", nil]; NSEnumerator *setEmt = [setM objectEnumerator]; NSString *setObj; while ((setObj = [setEmt nextObject]) != nil) { NSLog(@"setObj------%@------",setObj); } // 反向遍历 NSArray *arrayM1 = @[@"1",@"2",@"3",@"4",@"5"]; NSEnumerator *am = [arrayM1 reverseObjectEnumerator]; NSString *obj1; while ((obj1 = [am nextObject])!=nil) { NSLog(@"obj1------%@------",obj1); } } /** * 基于BLock的遍历方法 */ - (void)block { NSArray *am = @[@"A",@"B",@"C",@"D",@"E"]; [am enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { NSLog(@"all-----%@------",obj); if ([obj isEqualToString:@"3"]) { *stop = YES; } }]; // 反向编译 [am enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { NSLog(@"-------%@-----",obj); }]; } /** * 使用GCD的dispatch_apply函数,一般用于处理耗时较长,迭代次数较多的情况 */ - (void)GCD { NSArray *am = @[@"1",@"2",@"3",@"4",@"5"]; dispatch_queue_t queue = dispatch_get_global_queue(0, 0); dispatch_apply(am.count, queue, ^(size_t index) { NSLog(@"-------%@-----%@",am[index],[NSThread currentThread]); }); }
以上几种遍历方式,各自都有优缺点,大家在开发的过程中,根据需求择优选择,希望对大家有所帮助。
相关文章推荐
- iOS海哥开发笔记(开发中如何使用数据持久化)海哥原创,让你对存储知识一目了然
- 集成支付宝钱包支付iOS SDK的方法与经验
- iOS 设置视图的圆角效果
- iOS性能优化:Instruments使用实战
- iOS 点击按钮跳转到指定的TabBar
- iOS:OC的定时器任务方法,延时方法
- iOS开发编码建议与编程经验
- IOS中延时执行的几种方式的比较
- NSTimer使用注意事项
- iOS-CGContextAddArc各参数说明
- IOS开发之很简单的下拉刷新,包你满意
- IOS自适应前段库-Masonry的使用(转载)
- iOS 开发-删除storyboard的正确方法
- iOS开发之获取各种文件的目录路径的方法
- iOS 本地推送、远程推送及带快速回复的本地推送
- iOS从入门到颈椎病发作
- 实例讲解设计模式中的命令模式在iOS App开发中的运用
- iOS项目的Info.plist的一些设置mark
- virtualBox虚拟机安装64位操作系统BIOS的设置
- clang: error: no such file or directory: "xxxxxx" clang: error: no input files