2

列挙が終了したことをどのようにして知ることができますか?ドキュメントによると:の戻り値

nextObject

すべてのオブジェクトが列挙されている場合はnilです。私はいくつかの「デリゲートのような」振る舞いを実装することを望んでいました...

if (nextObject == nil) { 
    do something because we're done!
}

しかし、次のようなものはないと思います。

enumerationDidFinish:

次のブロックのどこで、列挙子が完了しているかどうかを確認できますか?

NSArray *anArray = // ... ;
NSEnumerator *enumerator = [anArray objectEnumerator];
id object;

while ((object = [enumerator nextObject])) {
    // do something with object...
}
4

5 に答える 5

3

ループが終了するwhileと、列挙が完了したことがわかります。次に、デリゲートメソッドを呼び出すことができます。

于 2010-05-17T02:22:08.677 に答える
2

whileブロック全体の後にコードを配置するだけです。

次に、列挙が完了すると、それが実行され、最後に到達したことがわかります。

于 2010-05-17T02:22:30.350 に答える
2

から返される値nextObjectnil

于 2010-05-17T02:22:37.803 に答える
2

while()ループの直後はどうですか。nextObjectがnilを返すと、列挙が完了し、ループ条件が失敗し、ループ本体の直後に実行が続行されます。

于 2010-05-17T02:24:33.420 に答える
0

返された「オブジェクト」がnilの場合、whileループは本体で実行を継続しないため、ループの最後まで中断されます。オブジェクトでやりたいことを何でも入れておくとよいでしょう。

于 2013-02-12T15:43:57.613 に答える