有没有一种简单的方法可以对数组中的一系列对象进行快速枚举?像...
for (Object *object in myArray startingAtIndex:50) {
//do stuff
}
...避免不得不做这样的事情...
for (Object *object in myArray) {
NSUInteger index = [myArray indexOfObject:object];
if (index >= 50) {
//do stuff
}
}
谢谢。
最佳答案
如果 myArray
是不可变的,那么 subArrayWithRange:
可能 不会复制指针,尽管 retain
可能仍然必须发送到子数组中的所有内容。
总的来说,这真的没关系。老实说,我从未见过快速枚举与 indexOfObject:
足以引起关注的性能问题(总是有更糟糕的事情。:)。
另一种方法;使用 enumerateBlock:
并简单地从 ranger 之外的索引返回(并使用停止标志)。
[myArray enumerateWithBlock: ^(id o, NSUInteger i, BOOL *f) {
if (i < 10) return;
if (i > 20) { *f = YES; return; }
... process objects in range ...
}];
(您甚至可以使用 options:
变体来同时枚举。)
关于iphone - Objective-C - 数组子集的快速枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6317047/