0

アプリに保存されているすべてのリモート画像を追跡するためのデータストアを構築中です。参照されているすべての画像を追跡するシングルトンを使用することにしました。

私が覚えているように、iOS は、現在のビュー コントローラーなどによって参照されているかどうかにかかわらず、最近の使用状況に基づいて、メモリからオブジェクトを自動的にパージし始めます。ただし、これらの画像をデータ ストアに保存すると、それらのオブジェクトは常に店そのもの。メモリ管理の私の解決策は、イメージが最後に呼び出されたときを追跡し、データ ストアに格納されているイメージの数とサイズに制限を設け、古いものを古いものから削除することでした。

この解決策は良いものですか?なぜですか、そうでないのですか?Apple の自動メモリ管理に頼る必要がありますか、それとも独自のマネージャーで問題ありませんか?

さらなる説明:

私のビュー コントローラーの 1 つから画像を要求すると、最終的に私のソリューションでどのように表示されるかを次に示します。

[[HollerImages store]getImageWithUrl:@"https://www.google.com/logos/classicplus.png" 
                     completionBlock:^(BOOL succeeded, UIImage *image){
                        if( succeeded ){
                            //Update the UIImageView with the returned image
                        }
                     }];

その後、ストアはアプリで現在参照されている画像の数を管理し、事前に定義された制限に達すると、古い画像の参照を自動的に解除します。考え?

4

2 に答える 2

0

Renaud Boisjoly(@rboisjoly)から、私が説明していたソリューションを提供しているように見えるこのライブラリへのリンクが送信されました:https ://github.com/rs/SDWebImage/

于 2012-07-25T19:07:41.623 に答える
0

メモリの問題を処理する最も簡単な方法は、-(void)didReceiveMemoryWarning関数を実装し、キャッシュされたデータをすべて消去することです。

あなたが話しているのは、期限切れのキャッシュを実装することです。挿入ごとにデータ構造内の要素を数え、制限に達したときにヘッドから要素を削除することができます (順序付けられたデータ構造である場合)。前者のソリューションはより簡単で、ほとんどの場合に機能します。

于 2012-07-25T19:09:23.923 に答える