2009-07-22 8 views
5

UIScrollViewにいくつかのUIViewを読み込んでいて、なぜそれらが非常に多くのメモリを使用しているのかを追跡しようとしています。私は、インスツルメントを使用して消去プロセスを行った結果、ビューの背景色を設定するとメモリ使用量が4倍に増加することがわかりました。UIViewの背景色を設定してメモリ使用量を増やす

背景色を設定しないと、メモリ使用量は約4.5メガになります。背景色をredColorまたはclearColorに設定するとすぐに、メモリの使用量が17メガにジャンプします。ここで

はコードです:

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

誰もがこれを引き起こしている可能性が何を知っていますか?

私が本当に後にしているのは、背景を明確にすることです。これを回避する方法がない場合は、UIViewの背景をクリアに設定する別の方法がありますか?

+0

私は全く同じ問題があります。透明な背景色を設定しないと、ビューは黒い背景で表示されます。あなたの解決策は何でしたか? –

答えて

12

UIViewのすべてのインスタンス(およびそれから派生したクラス)には、UIViewの視覚的外観を提供するCALayerオブジェクト(layerプロパティ経由でアクセス)があります。 CALayerは独自のビットマップを持ち、別のCALayerオブジェクト(リフレクションの仕方)とビットマップを共有することも、ビットマップを持たないこともできます。

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

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

+0

この回答は私には大いに役立ちます、私は非常に大きなUIView(コンテナとして使用)のメモリ使用を心配しました。 – ideawu

関連する問題