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 に答える