1

最初に、画像のかなり複雑なスクロール メカニズムを実装しました。これにより、1 つのスクロール ビューで (理論的には) 数十万をスクロールできます。これは、すべての UIImageView を再利用しながら、スクロール時に小さな部分をプリロードすることによって行われます。現在私がしているのは、新しく作成された UIImage オブジェクトを再利用された UIImageViews に割り当てることだけです。

新しい画像データを渡すことで、これらの UIImage オブジェクトを再利用することも可能であれば、より良いかもしれません。

問題は、現在 -imageNamed: メソッドを使用していることです。ドキュメントには、画像をキャッシュすると書かれています。

-imageNamed でこの場合に見られる問題: 画像がプリロード範囲からスクロールされるため、画像はもう必要ありません。ユーザーがスクロールしてスクロールしてスクロールしている間に何千もの画像をキャッシュしようとすると、まずいでしょう。新しい画像データを UIImage オブジェクトに詰め込んで再利用する方法を見つけたら、キャッシュされた古い画像はどうなるでしょうか?

したがって、興味深い方法が 1 つ残っています: -initWithContentsOfFile:

これは画像をキャッシュしません。また、-autorelease を使用していません。これは、この場合に適しています。

この場合、-initWithContentsOfFile: を使用する方がよいと思いますか?

4

3 に答える 3

2

Only a benchmark can tell you for sure. I'm inclined to think that UIImage image caching is probably extremely efficient, given that it's used virtually everywhere in the OS. That said with the number of images you're displaying, your approach might help.

于 2009-05-09T23:28:26.357 に答える
0

imageNamed メソッドのコメントhttp://www.alexcurylo.com/blog/2009/01/13/imagenamed-is-evil/に関する 1 つのリンクを見つけました。

于 2012-02-16T13:16:54.620 に答える
0

はい。画像が多すぎてすべてをキャッシュに保持できないため、-imageNamed: を使用できません。画像が何度も表示されなくても、パフォーマンスが低下することはありません。

于 2011-08-22T14:10:48.563 に答える