我想快速循环通过NSArray的一部分,例如从具有1000个对象的数组中的位置700到950。
我不认为使用[array objectAtIndex:index]这是一个很好的方法,因为它比使用for(数组中的Object * obj)的快速迭代慢
在这种情况下,最好的方法是什么?我正在考虑使用
for(Object * obj in [array subarrayWithRange]])但不确定开销是多少,因为将为此创建一个子数组。
还有其他好的选择吗?
答案 0 :(得分:4)
您可以使用enumerateObjectsAtIndexes:
枚举NSIndexSet中索引的数组,该数组可以从范围生成。
NSIndexSet *indexSet = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(700, 950)];
[array enumerateObjectsAtIndexes:indexSet options:kNilOptions usingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
}];
答案 1 :(得分:0)
我认为使用subarrayWithRange:
的开销很小,因为它不会复制原始数组,只是在它周围创建一个薄包装并引用回原始对象。
当然,您必须对其进行实际剖析并查看它是否过高。