0

我有一个NSMutableArrayof NSNumbers,我想用 Objective-C 风格的枚举来枚举所有这些。这是我到目前为止所做的。

for ( NSNumber* number in array )
{
    //some code
}

我希望能够快速识别第一个物体,我当然可以做到,

if ( [array indexOfObject:number] == 0 )
{
    //if it's the first object
}

有什么办法可以更快地做到这一点?当然还有老式的 C 风格的方式,先从数组中取出对象,枚举完再放回去。只是想知道是否有更好的技术。

4

3 回答 3

4

您可以尝试使用提供当前正在枚举的对象的索引的方法:

[array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
    if (idx == 0) {
        // this is the first object
    }
}];

或者,如果您只是想访问数组的第一个对象:

id obj = [array objectAtIndex:0];

或使用新的 Objective-C 样式/语法:

id obj = array[0];
于 2013-01-12T09:52:25.153 回答
3

此解决方案比访问和比较第一个数组元素更快:

BOOL firstIteration = YES;
for (NSNumber *number in array) {
    if (firstIteration) {
        // Handle first iteration
        firstIteration = NO;
    }
    // Do something
}
于 2013-01-12T09:53:04.860 回答
0

在快速枚举中,您不能更改数组。因此,如果要删除,则必须使用旧式for(;;)循环。

要找到第一个对象,只需使用[array objectAtIndex:0]

于 2013-01-12T09:49:00.377 回答