問題タブ [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.
objective-c - NSFastEnumeration プロトコルを実装するには?
私はクラスを持っており、クラスが NSFastEnumeration プロトコルに準拠していることを確認したいと考えています。ドキュメントを読みましたが、よくわかりません。プロトコルメソッドが何を返すべきか、またそれがどのように機能するか教えてもらえますか?
objective-c - Objective-Cの高速列挙バブルソート
いくつかのGCDをコードに統合しようとしていますが、深刻なボトルネックは、大きな配列内のオブジェクト間で実行しているバブル比較であることがわかりました。元のコードは次のとおりです。
私のドリフトを取得しますか?したがって、他の多くの高速列挙タスクは、変換することで簡単にGCDすることができます
に:
先読み-sorta-bubble-sorta-algorithm-thingをGCDブロック実装にフィードできるものに変換する方法はありますか?
objective-c - Objective-Cでの高速列挙とNSEnumeratorの比較
NSEnumerator
私はこれを何度も見てきましたが、ループで高速列挙を使用する方が、を使用するよりも正確に高速であるのはなぜですかnextObject:
。
iphone - この単純な「if」ステートメントが(高速列挙内で)機能しないのはなぜですか?
ChecklistItem
テーブル内のエンティティを列挙して、 priority
(NSNumber属性)が1のエンティティが。checklistItems
と多対多の関係にあるかどうかを確認していChecklist
ます。
この単純なコードでは、最初のNSLogは正常に機能し、いくつかのChecklistItemの優先度が1であると報告します。ただし、2番目のNSLogは呼び出されません。どうしてこれなの?「if」ステートメントを間違ってフレーミングしていると思いますが、その方法がわかりません。
objective-c - NSMutableArray からの特定のオブジェクトの列挙と削除
からアイテムを削除できませんNSMutableArray
。私はObjective-Cに非常に慣れていないので、ご容赦ください。
これまでのところ、私は次のことをしています: 特定のテキストが内部にある場合、配列から行を削除しようとしています。高速列挙中にこれを行うことはできないため、列挙が終了した後に削除するために、インデックスを保存しようとしています。ただし、これはキャストなしで整数からポインターを作成すると言われています。混乱している!
objective-c - 変更可能な配列に追加された後、ポインターを再利用できますか?
文字列を含む配列があるとしましょう。
私が望むのは、いくつかのカスタム クラスのオブジェクトを開始し、それらを可変配列に追加することです。文字列引数を取るカスタム init メソッドを使用しています。
より具体的には[SomeClass alloc] initWithName: aName]
、結果のオブジェクトをに追加したいと思いますNSMutableArray
。
Objective-C の高速列挙を使用することを考えています。だから私が得るものは次のとおりです:
問題はnil
、配列に追加できないことと、例外処理が好きではないことです。ただし、私の開始メソッドは を返す場合がありnil
ます。そこで、追加する前に最初にチェックすることにしました(防止)。私の新しい for-in ループは次のとおりです。
ここで、新しいオブジェクトをすぐに配列に渡すのではなく、someObject
最初にポインターを設定してから、ポインターを配列に渡します。
この例は私に疑問を投げかけます。ループ内でsomeObject = [[[SomeClass alloc] initWithName: name] autorelease]
、配列内の既存のオブジェクト (同じポインターを使用して追加されたもの) も変更されますか?
言い換えれば、addObject: (id)someObject
メソッドは渡したポインターの新しい内部コピーを作成するのか、それともポインターのコピーを作成する必要があるのか (方法はわかりません)、そのコピーを自分で渡す必要があるのでしょうか?
どうもありがとう!:-)
objective-c - オブジェクトがObjective-CでNSFastEnumerationプロトコルを実装しているかどうかを検出するにはどうすればよいですか?
タイプのオブジェクトで高速列挙を使用したいid
。
基本的に私はここでチェックを逃しています:
ios - Core Data / NSOperation:オブジェクトの列挙および削除中にクラッシュする
1つのオブジェクト(リスト)と多くのオブジェクト(リストアイテム)の関係を持つコアデータベースのアプリがあります。私はデバイス間でデータを同期する作業を行っており、その一環として、バックグラウンドスレッドのXMLファイルから(NSOperationサブクラスを介して)リストをインポートしています。
既存のリストを更新するときは、(そのスレッドに固有のNSManagedObjectContextから)古いリストアイテムをすべて削除し、XMLファイルから新しいリストアイテムに置き換えます...削除は、そのアイテムを列挙することによって処理されますリスト:
ただし、ときどき、その列挙中にクラッシュが発生します。
*キャッチされなかった例外'NSGenericException'が原因でアプリを終了しました。理由:'*コレクション<_NSFaultingMutableSet:0x4fcfcb0>は、列挙中に変更されました。
その問題の原因をどこから探し始めるのかわかりません。列挙が行われている間は、コードの他の部分のリストを変更しません。異なるリストがインポート/更新されるため、同時に複数のスレッドが存在する可能性があります...コンテキストを別のスレッドに保存すると問題が発生します-メインコンテキストにも通知するため(列挙と同時に発生した場合) ?
それが役立つ場合は、NSOperationサブクラスの「main」関数のコードを次に示します(Core Dataから古いリスト項目を削除し、XMLデータを解析してリストを更新します)。
アドバイスありがとうございます。
iphone - 高速列挙順序
行う
配列に配置された順序でオブジェクトを返すことを保証しますか?