ios 遍历方式
来源:互联网 发布:js 声明json 编辑:程序博客网 时间:2024/06/15 05:36
在开发的过程中,我们经常对数组,字典,以及一些其他的集合进行遍历,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]); });}
以上几种遍历方式,各自都有优缺点,大家在开发的过程中,根据需求择优选择,希望对大家有所帮助。
0 0
- ios 遍历方式
- iOS 遍历方式
- iOS 几种遍历方式
- IOS之路-枚举遍历的方式
- iOS开发中遍历方式 (有借鉴)
- iOS中Collection遍历的四种方式
- ios 开发 NSString 正确遍历字符个数方式 (surrogate pairs)
- iOS开发中数组常用的五种遍历方式
- IOS中NSArray的4种遍历方式
- ios遍历
- iOS开发实用技巧—Objective-C中的各种遍历(迭代)方式
- iOS开发实用技巧—Objective-C中的各种遍历(迭代)方式
- iOS开发实用技巧—Objective-C中的各种遍历(迭代)方式
- iOS开发实用技巧—Objective-C中的各种遍历(迭代)方式
- iOS开发实用技巧—Objective-C中的各种遍历(迭代)方式
- iOS开发实用技巧—Objective-C中的各种遍历(迭代)方式
- map集合遍历方式
- Map多种方式遍历
- 一些开源的数据挖掘系统/软件
- Springmvc中@Autowired注解与@Resource注解的区别
- 4.CSS盒子模型
- 存储过程和复杂SQL语句的陷阱
- Android SQLite性能分析
- ios 遍历方式
- 实验:C++实验2-项目1
- EBS-计划采购订单信息及接口数据
- 利用InverseMouseArea捕捉在有效区域以外的鼠标事情
- HDU 2074叠筐(覆盖)
- 基于jenkins+gitlab+redmine构建持续集成环境(一)
- 【bzoj2179】FFT快速傅立叶 FFT
- Android关于listview设置属性 android:listselector = "@null" 无效的问题
- Java:多线程,线程同步,同步锁(Lock)的使用(ReentrantLock、ReentrantReadWriteLock)