問題タブ [nsmutabledictionary]
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.
iphone - NSXMLParser とメモリ管理の問題
私は NSXMLParser を実装しようとしてきましたが、これまでのところ、メモリの問題、パフォーマンスの問題、または機能しないことがありました。
私はもともとネット上の例から作業していましたが、メモリのヒープがリークしました。オブジェクトを適切に解放しましたが、要素ごとに各オブジェクトを割り当ててから解放したため、パフォーマンスが低下することがわかりました。そこで、よりうまく機能するプロパティを使用することにしましたが、辞書を配列に追加しようとすると、固執しません:
だから私は3つの質問があります。プロパティは、メモリ管理の問題を処理するための最良の方法ですか? もしそうなら、NSDictionary * エントリをオーバーレイに保存できないのはなぜですか? プロパティが最善の方法ではない場合、何が最善の方法ですか?
乾杯
編集:比較的小さなxmlファイルを扱っていますが、多くの要素があります。それらを URL からダウンロードし、データを SQLite データベースに配置しました。
唯一のデータが属性にあるため、他のデリゲート呼び出しは使用されていません。最後の NSLog は単に null を返します。
objective-c - NSMutableDictionary でのメモリ リーク
このコード行がメモリリークを引き起こしている理由に混乱しています:
修正に関する提案は大歓迎です!
よろしく、B
iphone - Objective-C: カウントが 0 に達したときに通知される NSMutableDictionary にオブザーバーを追加します
NSMutableDictionary のカウントが 0 に達したときに通知を受け取りたいのですが、それは NSMutableDictionary を拡張せずに可能ですか (実際にはすべきではないと聞きました)?
たとえば、count が 0 かどうかをチェックしながら元のメソッドを呼び出して、remove メソッドを模倣するカテゴリを作成できますか? それとも、もっと簡単な方法がありますか。KVOを試してみましたが、うまくいきませんでした...
どんな助けでも大歓迎です。
ジョセフ
objective-c - すべてのモデル iVar に対して 1 つのセッターを使用する
アプリケーション用の一連のモデルがあります。これらすべてのモデル全体で、約 200 または 300 のインスタンス変数があります (存在する予定です)。アプリケーションは永続的なデータを Web ベースのサーバー (MySQL - しかし、その部分は問題ではないと思います) に保存します。モデル iVar が更新されるたびに、サーバーを呼び出して、その iVar の適切な値を更新する必要があります。
私の現在のモデル戦略は(ヘッダーファイル)です:
(実装ファイル):
問題は、200 個または 300 個の iVar がある場合、サーバーへの同じ更新呼び出しをすべて実行する必要があるため、多くのセッターを作成することを意味します。さらに、メソッド呼び出しを変更する必要がある場合は、アプリケーション全体のすべてのセッターのすべてのメソッドをすべて更新する必要があります。
設定する前に、最初にメソッドを介して iVar のすべてのセットを実行できるプロセスはありますか?
NSMutableDictionary
すべての iVar を格納するためにモデルごとのオブジェクトだけを持つことを考えましたが、それはセッターとゲッターを抽象化し、非常に多くの辞書に大きなメモリ フットプリントを導入する可能性があります。ただし、このようにすると、辞書が設定されるたびに、1 つのメソッドを介して渡すことができます。
私が理解しているように、実行時にiVarをオブジェクトモデルに動的に追加することは、モデルに依存する可能性のあるサブクラスを参照するポインターのため、悪いことと見なされます(完全な再コンパイルが行われない限り、サブクラスポインターはオフセットされません)。
どんなアイデアや提案も大歓迎です。
アップデート
Ole の推奨に基づいて、ここに解決策があります (残念ながら、数行よりも少し多くのコードを使用します)...
モデルに、必要なときに設定できるメソッドを追加しました。サーバーから返された一連の結果を追加すると、追加されたすべてのオブジェクトのオブザーバーがトリガーされるため、init からメソッドを直接呼び出しませんでした。そのため、サーバーからの最初のグラブを初期化して更新した後にメソッドを呼び出します。
これがコードです...
次に、オブザーバーをモデルに追加します。
self
私の実際の実装では、リッスンする必要があるが注意を払っていないもの ( のようなもの) を更新できるように、 に設定されたオブジェクトの通知を投稿することもありNSArrayControllers
ます。
iphone - NSDictionary/NSMutableDictionary の元の順序を取得するにはどうすればよいですか?
私は10個のキーでNSMutableDictionaryを作成しました.NSMutableDictionaryに追加されたのと同じ順序でNSMutableDictionaryキーにアクセスしたいと思います( SetValue:* forKey:* を使用);
どうすればそれを達成できますか?
objective-c - NSMutableDictionary のコンテンツを表示する
のコンテンツを表示するにはNSMutableDictionary
?
objective-c - Objective-C プログラミングで多くの値を保持する単一のキーを持つ NSMutableDictionary
NSMutableDictionary で同じキーに複数の値を設定する方法を教えてください。
以下のアプローチを使用すると、値が最近の値に置き換えられます。
私の場合:
ディクショナリの内容を表示すると、reminderDate
for キー コードのみが取得されます。ここで、コードはすべての値で同じです。姓と名が に置き換えられないようにするにはどうすればよいですかplannedReminder
。
ありがとう!
iphone - NSDictionary にデータを追加しています... SRSLY? もっと早い方法はありませんか?
私は Flash ActionScript のバックグラウンドを持っています。私の出身地では、次のような辞書のようなオブジェクトを設定できます。
Objective-C に来て、これに相当するものが次のように見えることに驚きました。
きっともっと簡単な方法があります... それとも、それは本当に私の運命ですか?
nsdictionary - 容量のあるNSMutableDictionary
オブジェクトの容量制限に達した後、NSMutableDictionaryに追加しようとするとどうなりますか?これは1つぶつかりますか、それとも例外をスローしますか?また、新しい辞書オブジェクトを追加するときに、最も古い辞書オブジェクトをぶち壊す方法はありますか?