問題タブ [nscache]
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.
ios - NSCacheは起動間で持続しますか?
私はキャッシュのためのかなり単純なメカニズムを調べており、現在NSCacheを使用しています(メモリ管理の理由で)。質問は-キャッシュは起動間で持続しますか?私にはノーのようです。
オブジェクトをキャッシュに入れても問題なく、アプリの実行中にオブジェクトをキャッシュから取り出すことができます。しかし、再起動すると、キャッシュがなくなったようです。
では、起動間でキャッシュを永続化する方法はありますか?もしそうなら、どのように前のセッションから現在のセッションにキャッシュを再同期しますか?
objective-c - UITableView の画像を保存するための NSCache
テーブルビューを持つビューコントローラーがあります。テーブルビューの各セルには、ネットから取得した画像がありますが、それらの多くは同じ画像を持っています。だから、私が現在行っているのは、取得した画像を NSCache オブジェクトに保存することです。それはこのように起こります:
imageCache はインスタンス変数で、avatarsFetched、crudClient は AFHTTPClient オブジェクトです。そして、テーブル ビューで:
self.delegateRef.hangiesCommunicator は、オブジェクト (アプリ デリゲートの保持プロパティ) をインスタンス変数として imageCache と共に返し、上部に 2 つのメソッドがあります。
スクロールすると、コンソールに @"Its not null" が表示されますが、フェッチされた画像は表示されませんが、デフォルトの 20x20-user-black 画像が表示されます。なぜこれが起こっているのですか?私は何を間違っていますか?
ありがとう!
iphone - アプリ全体での NSCache の最適な使用法
NSCache のグローバル インスタンスを 1 つ使用するのが最適なのか、それを必要とするコンポーネントごとに複数のインスタンスを使用するのが最適なのか疑問に思っています。
たとえば、コンテンツを画像に描画してキャッシュし、常に再生成しないようにするいくつかのビュー サブクラスがあります。クラスごとに NSCache のインスタンスを 1 つ持つ方が良いですか、それともアプリ全体に対して 1 つの集中型 NSCache だけにする方が良いですか?
オブジェクトのインスタンスごとに 1 つのキャッシュという意味ではないことに注意してください。クラスごとに NSCache の 1 つのインスタンスについて話しているのです。
xcode - テキスト/辞書の NSArray をキャッシュし、アプリ全体で使用できるようにする最良の方法は?
おそらく 10 ~ 100 個のオブジェクトの配列を要求しています。これらはすべて、NSDictionary に解析する JSON オブジェクトです。これをキャッシュして、このデータをアプリケーション全体で使用したいと考えています。NSCache はこれに役立ちますか、それとも NSUserDefaults を使用する方が良いですか、それともアプリ全体でデータを永続化する最も一般的な方法は何ですか? コアデータ? 私はiOS初心者で、これについてあまり経験がありません。
objective-c - cache.db または application.db を削除するとどうなりますか
最初のすべての xml サービス要求 (sendsynchronous を使用しています) がライブラリ フォルダーの cache.db にキャッシュされていることに気付きました。
アプリの起動後および起動前に cache.db ファイルを削除すると、どのような影響がありますか?
ios - ディスクからの何千もの画像で Photo Grid のスムーズなスクロールを実現
をPhotoGrid
使用して実装された、各行に 3 枚の写真がありUITableView
ます。
100 個の画像を格納できるメモリ内キャッシュ (NSCache を使用) があるため、グリッドに表示するディスク上に何千もの画像がある場合でも、一度に最大 100 個の画像をメモリに格納できます。
私の画像はすべて 4KB ~ 20KB の JPEG です。
したがって、このインフラストラクチャでは、ユーザーが写真グリッドをスクロールすると、NSCache から画像が継続的にロードおよびアンロードされます。通常のスクロールではすべてが良好に見え、55 ~ 58 fps 程度になります。
ユーザーが前後に速くスクロールし始めると、次の 2 つのケースがあります。
画像の読み込みタスクをメイン スレッドから切り離すと、画像がメモリに読み込まれる前にセルが表示されるため、フォト グリッドに画像が表示されなくなります。
/li>メイン スレッドで画像の読み込みタスクを実行すると、スタッターが発生します。36~45fpsくらい出ます。
/li>
getImageFromCacheForImagePath:imagePath
存在する場合は NSCache からすぐに画像を取得し、存在しない場合は画像をファイルからロードし、後で使用するために NSCache に設定しますが、制限NSCache
を 100 に設定しました。
私が試した/微調整したこと:
clipsToBounds
グリッド イメージ ビューには使用しないでください。- バックグラウンド スレッドで画像を読み込んでいます。
NSOperation
キューの使用。- 画像を 100 のバッチで読み込む (動作しますが、スクロールが速いため、画像の読み込み時間が遅くなります)。
ネイティブの写真アプリと同じ感覚を実現しようとしています。
あなたの提案は大歓迎です。
ios - NSCache - オブジェクトを削除不可としてマーク
ユーザーがメニューを介してView Controllerを切り替えると、十分なメモリがあればそれらをキャッシュしたいと思います。そのために、NSCache
たくさん収納したいUIViewControllers
。
ただし、NSCache
現在のオブジェクトが現在使用されており、削除しないでください。たとえば、アプリを実行し、いくつかのビュー コントローラーを読み込んでアプリを終了すると、NSCache
すべてが自動的に削除されますviewControllers
(これは理にかなっています - アプリはフォアグラウンドに長く留まることができます)。ただし、現在表示されているView Controllerも削除されますが、これは私が望んでいたものではありません。
特定のオブジェクトを削除不可としてマークするにはどうすればよいですか?
ios - キャッシュが NSIndexPath をキーとして間違った objectForKey を返す
私のcellForRowAtIndexPath
方法では、次のコードがあります。
テーブルビューの一番下までスクロールすると、各セルが正常に表示されます。上にスクロールすると、セルも正常に表示されます。しかし、上にスクロールした後に下にスクロールし始めると、セルが繰り返し表示され始めます。
インデックス パスに対して行うすべての NSLog 検索は、繰り返しセルに対しても正しい値を返します。
uitableview - バックグラウンドでのイメージのレンダリング
5〜6個のサブビューでそれほど複雑ではないテーブルビューがありますが、イメージビューは高解像度のイメージをレンダリングし、200X174サイズのイメージビューで表示します。イメージは非同期でダウンロードされ、ディスクにキャッシュされます。ただし、ユーザーがテーブルビューをスクロールすると、スクロールが落ち着こうとしているときにスクロールが途切れます。drawrect メソッドをオーバーライドして、calayers を使用して描画を行う独自のカスタム セルを作成したいと考えています。ユーザーがスムーズにスクロールできるように、これらの画像を非同期バックグラウンド キューでレンダリングすることはできますか?
objective-c - NSCache キーを反復処理する方法
キャッシュを保持するためにスレッドセーフな NSCache のような辞書を作成する必要があります。ただし、時々、キャッシュの内容を更新する必要があります。NSCache は、そのキーを反復する方法を提供しません。ここで代替手段は何ですか?同期を伴う NSMutableDictionary ?