1

問題は次のとおりです。ツリーマップレイアウトでいくつかの写真を表示するアプリを作成しています(例については、https://raw.github.com/beckchr/ithaka-treemap/master/Core-API.pngを参照してください)これレイアウトは UIScrollView に表示されます。そのスクロールビューには多くの画像を追加できるので、現在画面に表示されていないものを解放したいと考えています。私はARCを使用していません。

私の時点では、どの写真をリリースする必要があるか、およびスクロール中にそれを行う方法 (「アンロード」メソッドを呼び出す) を知っています。そのメソッドの無駄な呼び出しはありません。問題は、画像がリリースされると、スクロールが少しの間停止することです (数ミリ秒ですが、これは見栄えが悪く、スクロールが「ジャンプ」して遅くなり、まったくスムーズではなくなります)。

私が試したこと(「アンロード」メソッドの本文に入れます):

imageview.image = nil
performSelectorInBackground:@selector(effectiveUnload) withObject:nil
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND,0,^(void){
dispatch_sync(dispatch_get_main_queue(), ^(void){
imageview.image=nil}
}

この問題は奇妙だと思います。メモリの割り当てには速度低下の影響はまったくなく、メモリの解放にはのみ影響があるためです。

ご協力いただきありがとうございます。詳細についてはお気軽にお問い合わせください。

4

2 に答える 2

0

removeFromSuperviewスクロールビューからイメージビューを削除しようとしましたか

于 2013-04-30T07:27:05.667 に答える
0

ますます UIImageViews を追加しないでください - それらをリサイクルしてください! できるだけ多くのメモリを節約するには、ビューをリサイクルする UITableView の方法に従う必要があります。 ) 2. 新しいビューが表示されたら、まずプールにビューがあるかどうかを確認します。そうでない場合は、新しいビューを作成します。

私の答えがあなたの質問に直接答えないことは知っていますが、それが道です。そうしないと、最終的にメモリが不足します。

于 2013-04-30T08:36:57.613 に答える