iOS开发中遍历方式 (有借鉴)
来源:互联网 发布:pixhawk源码笔记 编辑:程序博客网 时间:2024/06/05 04:29
统一使用:NSArray *array= @[@"1",@"2",@"3"];
1 for循环 可反向遍历
常用地方:遍历字典、数组、集合
NSInteger arrayCount = [arraycount];
for (int i =0; i<arrayCount; i++) {
NSString *obj = arrayM[i];
NSLog(@"%@",obj);
}
优点:简单
缺点: 因为在字典和集合内部是无序排序,所以在遍历的时候需要用到一个新的数组当做中介,增加了开销。
特点:1.只有满足条件 循环才会执行 2.死循环会一直执行下去,除非强制退出 3.碰到continue则跳出本次循环,继续下一次判断,条件成立执行循环
4.碰到break无论条件是否满足,循环立刻结束 5.continue和break跳出的都是当前所在的循环作用域,如果外层有循环不受影响
2 NSEnumerator 遍历 可反向遍历
常用地方:类似for循环
NSEnumerator *arrayEnumerator = [arrayobjectEnumerator];
NSString *obj;
while ((obj = [arrayEnumeratornextObject]) != nil) {
NSLog(@"%@",obj); }
优点:1语法简洁 2效率最高
缺点:无法取得当前遍历操作所针对的下标
注意点 :for in快速枚举NSMutableArray
这类可变对象时要注意不能对容器进行修改,否则会导致遍历器抛出异常导致程序崩溃。
4基于block的遍历方式 可反向遍历
[arrayenumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop)
NSLog(@"");
}];
优点:1 遍历时可以直接从block中获得需要的所有信息,包括下标、值等。特别相对于字典而言,不需要做多余的编码即可同时获得key和value的值。 2能够直接修改block中key或者obj的类型为真实类型,可以省去类型转换的工作。 3可以通过NSEnumerationConcurrent枚举值开启并发迭代功能。
说明:基于Block的遍历方式在实现反向遍历的时候也非常简单,使用enumerateObjectsWithOptions方法,传递NSEnumerationReverse作为参数即可,在处理遍历操作的时候推荐基于Block的遍历方式。
5 使用GCD中的dispatch_apply函数
dispatch_queue_t queue =dispatch_get_global_queue(0,0);
dispatch_apply(array.count, queue, ^(size_t index) {
NSLog(@"%@--%@",array[index],[NSThreadcurrentThread]);
});
优点:开启多线程并发处理遍历任务,执行效率高。
缺点:1对于字典和集合需要借助数组 2 无法反向遍历
- iOS开发中遍历方式 (有借鉴)
- iOS开发中数组常用的五种遍历方式
- 技术人员在转向移动开发过程中有哪些经验和教训值得大家借鉴?
- ios中借鉴别的app的图片
- lua中有4种方式遍历一个table
- ios 开发 NSString 正确遍历字符个数方式 (surrogate pairs)
- ios 遍历方式
- iOS 遍历方式
- iOS中Collection遍历的四种方式
- IOS中NSArray的4种遍历方式
- iOS开发中MD5加密方式
- ios中有什么方式支持多继承
- iOS判断字符串中是否有中文及处理方式
- iOS 几种遍历方式
- 开发中获取项目下资源绝对路径方式有
- iOS各类优化方案(二)之前整理有借鉴别人的
- 有可以借鉴的观点
- iOS开发实用技巧—Objective-C中的各种遍历(迭代)方式
- Spring容器拆分、自动装配和依赖检查机制,基于注解的sessionFactory
- iOS开发 - Swift实现检测网络连接状态及网络类型
- C++编程笔记:使用WinHTTP实现HTTP访问(解决接收UTF8数据乱码问题)
- To 杰伦
- 使用协处理器将HBase数据索引到Elasticsearch集群
- iOS开发中遍历方式 (有借鉴)
- Android RecyclerView点击事件与长按事件
- 磁盘(常见的raid组合)
- Ubuntu14.04安装OpenCV3.0
- Java堆、栈和常量池以及相关String的详细讲解
- 安装使用cscope
- Toolbar包含EditText时,点击键盘弹出时Toolbar被拉伸
- 在XML里的XSD和DTD以及standalone的使用4----具体使用详解
- 共享URL