adu*_*ubr 5 arrays enumeration objective-c nsarray
假设我有三个相同大小的数组.我必须对所有物体做点什么.如果我使用标准C数组,我会写类似的东西
for (i = 0; i < size; i++) {
doSomething(array1[i]); // or [[array1 objectAtIndex:i] doSomething];
doSomethingElse(array2[i]); // or [[array2 objectAtIndex:i] doSomethingElse];
doSomethingReallySpecial(array3[i]); // or [[array3 objectAtIndex:i] doSomethingReallySpecial];
}
Run Code Online (Sandbox Code Playgroud)
使用Objective C,我们有更多的方法来遍历NSArray中的对象:快速枚举,基于块的枚举和使用枚举器.我应该使用哪一个?为什么?有什么不同?
编辑
实际上这个问题可能是这样形成的:如果需要使用数组项的索引,应该使用哪个枚举?
您应该使用最能向代码读者清楚表达代码意图的一种。除非您已将此循环确定为重要的性能瓶颈,否则维护代码的能力更为重要。
\n\n也就是说,单独的快速枚举(即for(id i in array))并不能提供索引。如果您不想使用 C 样式循环,-[NSArray enumerateObjectsUsingBlock:]请提供当前项和索引,并可用于压缩多个数组。我怀疑,对于多个数组,C 风格的方法在性能方面通常是等效的\xe2\x80\x94,也许对读者来说更清楚,但你应该对其进行分析以确保确定。
您正在寻找的是函数式编程中的常见习惯用法,并且当然可以使用块在 GCD 之上实现,但我不知道有任何实现。
\n| 归档时间: |
|
| 查看次数: |
1478 次 |
| 最近记录: |