5

Web サービスから画像リソースとテキストを取得するアプリを作成しています。画像のダウンロードに対処するために、素晴らしい AFNetworking の UIImageView+AFNetworking カテゴリを選択します。

ただし、メモリの問題に直面しています。私はInstrumentsのAllocationツールを使用しましたが、より多くの画像をロードするたびに、メモリ割り当てが常に増加し、サイズが 1 ~ 2 MB になることがわかりました。ソース コードを調べたところ、AFNetworking のコードにあることがわかりました。

正確なコード行は次のとおりです。

- (void)connectionDidFinishLoading:(NSURLConnection *)__unused connection {
    self.responseData = [self.outputStream propertyForKey:NSStreamDataWrittenToMemoryStreamKey];

    [self.outputStream close];

    [self finish];

    self.connection = nil;
}

これにより、メモリ割り当ての 99.6% が占有されます。

プロジェクトで ARC を使用し、UITableView で UIImageViews を表示し、次のコードのようにセルを構成します。

[self.imageView setImageWithURLRequest:request
                          placeholderImage:nil
                                   success:successBlock
                                   failure:failBlock];

メモリの問題について誰かアイデアを提供できますか? メモリが割り当てられると、画像ビュー全体をクリアしてもクリアされないので、本当に頭痛の種です。しばらくすると、私のアプリはInstrumentsのReal Memory Usageウィンドウから 100MB 以上を占有します。

どんな助けでも大歓迎です!! 前もって感謝します!!

4

1 に答える 1

1

画像のキャッシュをクリアすることができます。ここのgithubでそれについての議論があります:

AFNetworking 画像キャッシュ

それはあなたの問題を解決するかもしれないし、しないかもしれません。ただし、定期的にキャッシュをクリアすると、メモリ使用量が抑えられると思います。

于 2013-01-24T01:58:47.280 に答える