質問

私は多くのuiviewをuiscrollviewにロードしており、なぜ彼らがそれほど多くのメモリを使用しているのかを追跡しようとしています。楽器を使用した排除のプロセスの後、ビューの背景色を設定するとメモリの使用量が4回増加することがわかりました。

背景色を設定しないと、メモリの使用量は約4.5megsにあります。背景色をレッドカラーまたはクリアカラーに設定するとすぐに、メモリの使用量は17megにジャンプします。

これがコードです:

ThumbnailView *thumbView = [[ThumbnailView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 225.0f, 320.0f)];
thumbView.tag = aCounter;
thumbView.backgroundColor = [UIColor clearColor];

何がこれを引き起こしているのか知っている人はいますか?

私が本当に望んでいるのは、背景を明確にすることです。これを回避する方法がない場合、UIViewの背景を明確にする別の方法はありますか?

役に立ちましたか?

解決

UIView(およびそれから派生したクラス)のすべてのインスタンスには、UiViewの視覚的な外観を提供する関連するCalayerオブジェクト(レイヤープロパティからアクセス)があります。 Calayerは独自のビットマップを持つことができます。別のCalayerオブジェクト(これが反射の仕方です)とビットマップを共有するか、ビットマップを持たないことができます。

UIViewが他のコントロールのコンテナとして機能する場合、レイヤーに関連付けられたビットマップがないため、メモリはほとんど使用されません。背景の色になるとすぐに、そのバッキングビットマップを作成して、レンダリングするものがあるように作成する必要があります。 UiviewサブクラスがDrawRectを実装してグラフィックをビューに描画すると、同じことが起こります。

フルスクリーンサイズのビューは多くのメモリを消費するため、Uiscrollviewベースのソリューションを実装するときは、表示されるビューと2つの側面のみをロードする必要があります。事前にそれらの負荷を作成しないでください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top