問題タブ [fast-enumeration]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
3384 参照

objective-c - 高速列挙を停止するにはどうすればよいですか?

探しているものを取得したら、どうすれば高速な列挙を停止できますか。

for ループでは、カウンター数を 1000 か何かに設定するだけです。例:

そのため、高速列挙を順方向ループ型のものに変換せずに (i と比較し[array count]て、プロセス内の高速列挙をどのように停止できますか?

0 投票する
3 に答える
303 参照

objective-c - 高速列挙パフォーマンスを向上させる

sqliteデータベースからNSArrayにロードされる280.000以上の単語の膨大な単語リストがあります。次に、高速列挙を実行して、ユーザーが入力した特定の文字列値が配列内の単語の1つと一致するかどうかを確認します。アレイは非常に大きいため、iphone 4でそのアレイを通過するのに約1〜2秒かかります。

どうすればパフォーマンスを向上させることができますか?たぶん私はいくつかの小さな配列を作る必要がありますか?通過するデータが少なくなるように、アルファベットの各文字に1つずつ。

これが私のデータベースクラスの外観です

それから私のメインビューで私はそれをこのように初期化します

そして最後に、このメソッドを使用して配列を調べます

0 投票する
3 に答える
457 参照

objective-c - クラス オブジェクトの高速列挙

クラスのインスタンスとクラス自体の両方に「子」があるアプリケーションを実装しています( 内に配置されていますNSMutableArray)。これはかなり複雑なアプリケーションですが、Objective-C のおかげでとても簡単です。クラスはそれ自体がオブジェクトであり、メソッドと「変数」を持つことができます (静的変数などの助けを借りて)。

簡単にするために、インスタンス ( を使用-) とクラス ( を使用) の両方にアクセサー/セッター メソッドを実装+して、配列に直接アクセスせずに「子」を取得して操作しました。オブジェクトを可能な限り閉じて、メソッドでデータ検証を行うようにしています。

また、プロトコルから高速列挙インスタンスメソッドを実装しました。ここで質問があります。高速な列挙型クラスNSFastEnumerationメソッドを実装して、それを Objective-C のコンストラクトで使用できますか? つまり、これを実装できますか:for...in

そして、そのような場所で使用します:

マクロとして高速な列挙を実装する GNUStep のGSFastEnumeration.hファイルを覗いてみたところ、上記が可能であることが確認されましたが、Apple が同じことを行っているかどうかはわかりません。

プロトコルを自分のクラス オブジェクトに関連付けることができなくても、NSFastEnumerationそのプロトコルを使用せずに高速な列挙を行うことはできますか (そして将来的に保証されますか)?

0 投票する
3 に答える
1271 参照

objective-c - Big Nerd Ranch Objective C Chapter 17 チャレンジ - クラスの定義

クラスの操作に問題があります。NSObject のサブクラスである「StockHolding」オブジェクトを作成する必要があります。インスタンス変数とメソッドを作成します。次に、名前と価格を含む株式保有の 3 つの反復を作成し、それらを変更可能な配列に読み込みます。配列内のオブジェクトをすばやく列挙し、それぞれのプロパティ (価格) を出力するのが困難です。問題は、オブジェクトを列挙してプロパティを出力しようとするとエラーが発生することです。私は運がない問題を解決するいくつかの異なる方法を試しました。何か案は?また、 currentStock が名前ではなくポインターの位置を出力していることにも気付きました。おそらく、これらの問題は関連しています。前もって感謝します。

'ヘッダ'


'実装'


'主要'

0 投票する
1 に答える
516 参照

ios - 高速列挙を使用して NSManagedObject を削除しても安全ですか?

高速列挙で反復されるコレクションを変更することは想定されていませんが、それがどの程度であるかはよくわかりません。以下のコードで問題は発生しませんでしたが、運が良かったのかどうかはわかりません。誰も明確な答えを持っていますか?

したがって、実際には配列を変更していませんが、コンテキストからオブジェクトを削除しています。これにより、配列が間接的に変更される可能性がありますが、それについてはわかりません..

0 投票する
1 に答える
431 参照

javascript - JavaScript配列をサブクラス化すると、高速列挙が壊れます

このように、プロトタイプを使用して配列をサブクラス化しています。

すべてが期待どおりに正常に機能し、次の方法で「MyArray」インスタンスを初期化できます。

問題は、MyArrayインスタンスの高速列挙が壊れていることです。実際には、次のループがあります。

プリント:0、1、2、長さ

実際には、クラスのすべてのメソッド/プロパティが列挙に含まれています。通常の配列では、コードは0、1、2のみを出力します(これらの数値は配列のインデックスです)。

だから...私の質問は:高速列挙を維持することによって配列を拡張するにはどうすればよいですか?

ps:Objective Cでは、高速列挙を実装するためにメソッドをオーバーライドする必要があります... JavaScriptでオーバーライドする特別なメソッドはありますか?

注:明らかに、「MyArray」の実際の実装は少し異なりますが、投稿したコードは、異常な高速列挙ループを生成するのに十分です。なぜ私が配列を拡張しているのか私に聞かないでください、私には正当な理由があります;)

0 投票する
2 に答える
399 参照

objective-c - これは高速列挙を使用する非効率的な方法ですか?

列挙がどのように高速に機能するかの詳細を完全には理解していませんが、次の 2 つのケースを比較してください。

対。

最初の例では、反復ごとにそのチェーン全体を通過して配列を取得しますか? 2番目の方法を使用する必要がありますか?

0 投票する
1 に答える
1005 参照

objective-c - '互換性のないタイプから'id'に割り当てる'

Box2d(c ++で記述されている)用のObjectiveCラッパーを実装しています。b2Bodyは、ラッパーB2Bodyへの参照をuserDataフィールドに保持します。GetUserDataはvoid*を返します。私は現在、B2BodiesをB2Worldから取り出すための高速イテレーションを実装しています。

以下に示す行で、互換性のないタイプ「B2Body*」から「ID」への割り当てエラーが発生します。なんで?

`

B2Body.hは次のようになります:#import

0 投票する
3 に答える
820 参照

objective-c - Objective-C を使用して、ツリーを高速列挙に変換する方法はありますか?

を持つツリーがあり、rootNodeその子ノード (バイナリ ツリー) の左右を指している場合、Objective-C 2.0 のように高速列挙に変換する方法はありますか? だから私たちはできる

NSMutableArrayNSSet、などのコレクション オブジェクトを使用して、メモリ サイズの O(n) オブジェクトを構築せずに、できればNSDictionary

順序は重要ではありませんが、深さ優先の順序になる可能性があります。

0 投票する
1 に答える
34963 参照

objective-c - enumerateObjectsUsingBlock: の BOOL *stop 引数は何に使用されますか?

私はenumerateObjectsUsingBlock:最近、高速な列挙のニーズのために多くを使用してBOOL *stopおり、列挙ブロックでの使用法を理解するのに苦労しています。

NSArrayクラス参照の状態

stop: ブール値への参照。ブロックは値を に設定してYES、配列のそれ以上の処理を停止できます。stop引数は out-only 引数です。このブール値をYESブロック内にのみ設定する必要があります。

したがって、もちろん、ブロックに次を追加して、列挙を停止できます。

私が知る限り、明示的に設定*stopYESなくてもマイナスの副作用はありません。列挙は、配列の最後で自動的に停止するようです。*stopでは、ブロック内での使用は本当に必要なのでしょうか?