iphone - Objective-C - 数组子集的快速枚举?

标签 iphone objective-c ios collections nsarray

有没有一种简单的方法可以对数组中的一系列对象进行快速枚举?像...

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/

相关文章:

ios - 显示屏左侧的 TouchesBegan 延迟

ios - Xcode 5 中的导航栏问题

objective-c - 我怎么知道 NSTextView 何时失去焦点?

objective-c - NSTextView 颜色和字体清除后重置

ios - 自动完成 UITextField

ios - 计时器运行时,SwiftUI ActionSheet 不会关闭

iOS Mystery crash w libsystem_kernel.dylib

ios - 安装了相同应用程序的iOS联系人列表

ios - 从许多不同的 ViewController 中呈现 ViewController 的最佳方式

iphone - 将数据从 NSObject 发送到 UIViewController