enumerateObjectsUsingBlock VS for(... in ...)
enumerateObjectsUsingBlock VS for(... in ...)
for(... in ...)用起来非常方便、简洁,同时enumerateObjectsUsingBlock: 也有很多新特性:
- 通常enumerateObjectsUsingBlock:和 (- for(... in ...)在效率上基本一致,有时会快些。主要是因为它们都是基于- NSFastEnumeration实现的. 快速迭代在处理的过程中需要多一次转换,当然也会消耗掉一些时间. 基于Block的迭代可以达到本机存储一样快的遍历集合. 对于字典同样适用,而数组的迭代却不行。
- 注意"enumerateObjectsUsingBlock" 修改局部变量时, 你需要声明局部变量为 - __block 类型.
- enumerateObjectsWithOptions:usingBlock:支持并发迭代或反向迭代,并发迭代时效率也非常高.
- 对于字典而言, - enumerateObjectsWithOptions:usingBlock也是唯一的方式可以并发实现恢复Key-Value值.
就个人而言, 我偏向于使用 enumerateObjectsUsingBlock: 当然最后还是要根据实际情况上下文决定用什么
详情可查看 http://www.cnblogs.com/skyming/p/3977075.html
enumerateObjectsUsingBlock VS for(... in ...)的更多相关文章
- Swift - enumerateObjectsUsingBlock的用法
		enumerateobjectsusingblock:不是Array的方法在NSArray使用.如果你想使用它,你需要一个实例NSArray而不是Array. import Foundation va ... 
- 关于EnumerateObjectsUsingBlock和for-in之间的较量
		遍历一个数组看谁快 参赛选手 ForLoop, For - in, enumerateObjectsUsingBlock这个三个方法: NSMutableArray *test = [NSMuta ... 
- enumerateObjectsUsingBlock、enumerateObjectsWithOptions、enumerateObjectsAtIndexes、makeObjectsPerfor使用
		OC至 NSArray它提供了一个方便的遍历block,以下具体说明 第一.enumerateObjectsUsingBlock NSArray *array=@[@"aa",@& ... 
- enumerateObjectsUsingBlock 、for 、for(... in ...) 的区别 & 性能测试
		for VS for(... in ...) for 的应用范围广基本可以NSArray.NSArray以及C语言的数组等,而for(... in ...)仅限于NSArray.NSArray等 fo ... 
- Swift-(OC中的enumerateObjectsUsingBlock跟Swift的enumerate区别)
		OC中使用: NSArray * lists = [NSArray array]; [lists enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUI ... 
- enumerateObjectsUsingBlock 、for 、for(... in ...) 的差别 & 性能測试
		for VS for(... in ...) for 的应用范围广基本能够NSArray.NSArray以及C语言的数组等,而for(... in ...)仅限于NSArray.NSArray等 fo ... 
- for in、for和EnumerateObjectsUsingBlock遍历的区别
		1.对于集合中对象数很多的情况下,for in 的遍历速度非常之快,但小规模的遍历并不明显(还没普通for循环快) 2. 如果在for in 循环里,对这个数组进行了修改的话,无论是增,删,修改数组元 ... 
- iOS之解决崩溃Collection <__NSArrayM: 0xb550c30> was mutated while being enumerated.
		崩溃提示:Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <CAL ... 
- iOS开发系列--通讯录、蓝牙、内购、GameCenter、iCloud、Passbook系统服务开发汇总
		--系统应用与系统服务 iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录.微信电话本会使用iOS的通讯录,一些第三方软件会在应用内发送短信等.今天将和大家一起学习如何使用 ... 
随机推荐
- IIS 7 支持10万并发请求
			原文链接:http://www.cnblogs.com/dudu/archive/2009/11/10/1600062.html 今天下午17点左右,博客园博客站点出现这样的错误信息: Error S ... 
- FileUpload
			一upload原理: 1.表单的method必须是post方法 2.enctype属性必须是“mutipatr/form-data”类型 enctype默认的属性是“application/x-www ... 
- PHP第二课笔记
			★Php的基本概念 快速入门案例 test.php <html> <body> //<?php ?>是运行在服务端 <?php echo 'hello' ... 
- VMware网络配置 实现与物理机互访
			虚拟机和物理主机互访,两台机器可以互访并可以被局域网内其他机器访问,可以ping通并可以访问网站. 这几天正好有空搞个虚拟机,并装了不同系统,以备不同部署环境需要.明明是搞编程的,却不得不学各种知识, ... 
- debian系统下安装ssh服务
			它是什么?? SSH 为 Secure Shell 的缩写,简单地说,SSH 为建立在应用层基础上的安全协议.SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议.利用 SSH 协议可 ... 
- iOS开发之MD5封装及应用
			一.MD5的封装 #define CC_MD5_DIGEST_LENGTH 16 - (NSString *)toMD5 { const char* input = [self UTF8String] ... 
- hdu 1811 Rank of Tetris
			http://acm.hdu.edu.cn/showproblem.php?pid=1811 拓扑排序和并差集 #include <cstdio> #include <queue&g ... 
- eclipse打开文件位置Open Explorer 插件
			,OpenExplorer插件可以满足这个功能,可以到https://github.com/samsonw/OpenExplorer/downloads下载最新版本,将jar包放到eclipse的pl ... 
- 通过expdp/impdp进行oracle数据库的备份恢复详细指导
			假定导出oracle数据库home目录为/opt/oracle,数据库用户为exp_user/test,导入用户为imp_user/test,给出如下样例,具体使用时根据实际情况修改路径及用户名/密码 ... 
- JQuery 图片延迟加载并等比缩放插件
			原文地址:http://www.shangxueba.com/jingyan/1909987.html DEMO地址:http://demo.jb51.net/html/jquery_img/jque ... 
