問題タブ [nsmutableset]

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 投票する
3 に答える
3393 参照

iphone - NSMutableSet で同じプロパティ値を持つオブジェクトを見つける

オブジェクトの NSMutableSet があります。すべてのオブジェクトは明らかに一意ですが、NSInteger プロパティである同じ.angle値を持つ場合があります。

同じ.angle値を持つオブジェクトが 2 つ以上あるかどうかを確認し、グループ化して配列にする必要があります。

どうやってやるの?
どんなガイダンスでも大歓迎です

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

memory-management - 別の関数で NSMutableSet のメソッドを呼び出すと、EXC_BAD_ACCESS がスローされます

私はそのようなコードにこだわっています:

foo1 の後にのみ foo2 を呼び出します。私のデバッグアウトは次のようなものです:

どうしたの?__ 興味深い注記: foo2 が予定どおりに呼び出している場合にのみ失敗します。__ 申し訳ありませんが、詳細を見逃していました。どちらも完璧に機能します。皆さん、ありがとうございました

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

objective-c - NSMutableSetを監視するKey-Value

プレーンクラスには、NSMutableSetプロパティがあります。オブジェクトがセットに追加またはセットから削除されるたびに、カスタムコードを実行したいと思います。クラスにいくつかのようなメソッドを書くことができることは知っていaddObjectToSet:ますが、セットに直接KVOを使用したよりエレガントなソリューションがあるかどうか疑問に思いました。

結局のところ、NSSetにオブザーバーを追加しようとすると、NSSetは例外を発生させます。当然のことながら、観察する名前付きのkeyPathはおそらくないでしょう。ドキュメントは例外についてかなり明確ですが、私は提案された回避策を理解していません:

セットを観察する代わりに、セットが関連オブジェクトのコレクションである順序付けられていない対多の関係を観察します。

誰かがこれが何を意味するのかを繰り返すことができますか?そして、回避策はどのようになりますか?

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

objective-c - NSMutableSet カウント = 1 ですが、そのオブジェクトは null ですか?

この奇妙なSIGABRTエラーがポップアップするまで、うまく機能しているNSMutableSetを使用しています:

2011-07-05 17:01:00.249 Dama[1497:cd57] *キャッチされない例外 'NSInvalidArgumentException' が原因でアプリを終了しています。理由: '-[__NSCFSet removeObject:]: nil を削除しようとしています'

わかりました、nil を削除することはできませんが、これが私のコードです:

gdb コンソールを使用して、theSet が次のようになっていることがわかりました。

(gdb) po theSet

{(

)}

(gdb) print (int) [theSet カウント]

$1 = 1

これはどのように可能ですか?

PS: マルチスレッド環境で実行しています.. 2 つのスレッドが同時にアクセスしていないとは約束できませんが、そうであってはなりません..

編集

どうやって NSSet が (null) になるのか本当に知りたいのですが、どうやってそこにたどり着いたのか気にしません.. 私のマルチスレッドプログラムがどんなに汚れていても、これは起こるべきではないと思います. [そして再確認しましたが、このセットはバックグラウンド ワーカー スレッドによってのみアクセスされます]。

編集

2011-07-05 17:39:55.884 App[1608:c59f] セット数 = 2 内容: {(

2011-07-05 17:39:55.886 App[1608:c59f] Set count = 9 内容: {(

ヒント!!

Stepdealloc メソッド (xD) を確認してください。

もう一つのヒント!!

PoolStep は、1 つのスレッドのみがアクセスするため、sharedPool メソッドに @synchronize ブロックがないシングルトンです。(そしてパフォーマンスが必要です)

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

iphone - NSMutableSets の結合に関する問題

次のコードがあります。

serverSet のすべてを localSet に入れたい。このコードはこれを反映していません。

重複が localSet に追加されていない場合も望ましいでしょう。

編集:これが私のログです:

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

iphone - MKMapViewで注釈の操作を実行するときのリーク

マップビューに表示されるアノテーション(カスタムPostLocationAnnotationクラス)を取り込んでクラスターがそれらを閉じ、PostLocationAnnotationsとLocationGroupAnnotationsのMKAnnotationの配列(それぞれにPostLocationAnnotationsが含まれるクラスター)を出力するメソッドがあります。これが私が関数を呼び出す方法です(マップのビューポートが変更されたときに呼び出される'updateAnnotations'メソッド内から):

annotationsToAddには、サーバーから取得された、まだマップに追加されていない注釈が最初に入力されます。したがって、マップに配置する必要のあるアノテーションの完全なリストをclusterAnnotationsメソッドに渡します。メソッドの本体は次のとおりです。

これを実行するとゾンビメッセージが表示され、[Dリリース]を削除するとゾンビは修正されますが、リークが発生することがわかりました。Instrumentsを見ると、メモリアドレスが最初にclusterAnnotationsでMallocされ、次に2、3回保持および解放され、次にregionQueryForPointによって何度も保持され(47参照のピークに達する)、clusterAnnotationsによって2回解放されることがわかります。 、その後、refcountが-1に達するまで[NSAutoreleasePoolドレイン]によって解放され、ゾンビメッセージエラーが発生します。regionQueryForPointのコードは次のとおりです。

多数の保持は、regionQueryForPointがexpandDbScanClusterWithPointメソッドから呼び出されたときに発生するように見えるため、完全を期すためにここに含めました。

私はこれを何年にもわたって分析し、参照を数え、ポインターを監視し、すべてを行ってきましたが、このDセットを安全に解放する方法を理解することはできません。誰かが私が見ていないものを見ることができますか?

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

objective-c - Objective c、リバース コラッツ、NSArray のデバッグを手伝ってください

私はコラッツ予想を使用して数学フェア プロジェクトに取り組んでいます。ウィキペディアでここで見つけることができるように、逆グラフを作成したいと考えていますが、コードのどこかを台無しにしていて、すべてが表示されていないことがわかりました。値を逆にします (例: 配列から 1 つの奇数の値を見つけ、次に同じ値 *2 を見つけますが、それを超えることはありません)。

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

iphone - Objective-cはNSStringのNSMutableSetをソートしますか?

重複の可能性:
NSSetを並べ替える最も効率的な方法は何ですか?

私は現在、次の文字列のリストを持つNSMutableSetを持っています。例: {@ "c"、@ "d"、@ "e"、@ "f"、@ "g"、@ "a"}

これらの値をアルファベット順に並べ替える方法を教えてもらえますか?を使用してこれを行う方法はありsortedArrayUsingDescriptors:ますか?

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

objective-c - フリーダイヤルのブリッジオブジェクト、保持および解放

私は現在NSMutableSet、関数によって作成されたものを見ていますCFSetCreateMutable()。ドキュメントには、の戻り値はCFSetCreateMutable()フリーダイヤルブリッジであると記載されています。つまり、単純ににキャストできますNSMutableSetreleaseこれは、メッセージの送信が完全に有効であることを意味しますか?allocそのようなオブジェクトをNSクラスを介して処理されたかのように常に扱うことができると私は常に安全だと思いますか?

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

objective-c - NSMutableSetにオブジェクトを入力しても機能しません-NSLogとデバッガーにNullが表示されます

NSMutableSetを使用してオブジェクトのセットを作成しようとしています。オブジェクトはタグであり、各タグにはIDと名前があります。

タグクラスは次のように定義されます。

私のアプリケーションのどこかで、SQLiteを使用してTAGテーブルのタグをフェッチしています。whileループを使用して反復します。反復ごとに、タグオブジェクトを作成し、それをセットに追加しようとします。以下のコード:

したがって、前述したように、このwhileループを繰り返すと、オブジェクトとそのIDと名前が入力されます(デバッガーを調べ、NSLogを使用してこれを確認しました)。ただし、thisTagSet NSMutableSetは、addObjectメソッドを使用している場合でも空のままです。ここで私が間違っていることはありますか?私はまた、次のように2つのステップを分離しようとしました。

繰り返しますが、同じ結果です。thisTagObjectを正常に取得しましたが、thisTagSetに何もありません...