6

作成しているクラスに(iOS / Objective Cで)高速列挙プロトコルを採用する方法を理解しようとしています。Appleのドキュメントのセクションを読みましたが、...よくわかりません。

誰かが私が見ることができるいくつかのサンプルコードを持っていますか?

私がやろうとしていること:送信者に反復させたいオブジェクトの配列があります。送信者は、for-in構造を使用したいと考えています。問題は、送信者に配列内のすべてのオブジェクトを表示させたくないということです。これらのオブジェクトの一部は、アプリケーションのコンテキストでは有効ではないためです。

つまり、イテレータが特定の条件に一致する配列内のオブジェクトのサブセットを返すようにします。

速度が低下しないように、プロセスで新しい配列を作成したくない。

4

3 に答える 3

9

Apple独自のFastEnumerationSampleは、それを非常によく示しています。その音から、あなたはまだそれを見たことがないかもしれません。

このブログ投稿もあります。

于 2012-06-07T15:58:26.970 に答える
2

ここではるかに良い説明:

http://www.cocoawithlove.com/2008/05/implementing-countbyenumeratingwithstat.html

注意:Appleのソースコードは技術的には正しいですが、説明が不十分であり、「プログラマーがその日に何を考えていたか、喫煙していたかを推測する」ことを楽しんでいない限り、ほとんど役に立ちません。

Liekwise、Mike Ashの投稿は正しく、その方法を知った後で役立ちますが、出発点としてはひどいものです。

于 2014-02-10T14:37:19.357 に答える
0

「送信者がfor-in構造を使用したい」とはどういう意味かわかりません。あなたが求めている結果は、indexesOfObjectsPassingTest:を使用することでおそらくより良く達成されるでしょう。これにより、設定したテストに合格する配列内のすべてのアイテムのインデックスセットが得られます。

また、filteredArrayUsingPredicate:を使用して、元の配列のサブセットである新しい配列を導出することもできます-新しい配列を作成したくないと言ったのは知っていますが、配列のサブセットを返したい場合は、新しいアレイを作成します。

于 2012-06-07T15:58:14.777 に答える