2009-07-22 18 views
5

UIScrollView'e bir dizi UIView yüklüyorum ve neden bu kadar çok bellek kullandıklarını anlamaya çalışıyorum. Aletleri kullanarak eleme işleminden sonra, görünümlerin arka plan rengini belirleme işleminin bellek kullanımını 4 kat artırdığını keşfettim.UIView artan bellek kullanımı için arka plan rengini ayarlama

Arka plan rengini ayarlamazsam, bellek kullanımı yaklaşık 4,5megs değerinde olur. Arka plan rengini redColor veya clearColor öğelerine ayarladığım anda, bellek kullanımı 17megs'e atlar. İşte

kodudur:

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

herkes bu neden olabilecek biliyor mu?

Gerçekten de sonra arka plan açık olmaktır. Bunun etrafında bir yolu yoksa, bir UIView'in arka planının açıklığa kavuşturulmasının başka bir yolu var mı?

+0

Tam olarak aynı sorun var. Açık arka plan rengini ayarlamazsam, görünümler siyah bir arka plan ile görüntülenir. çözümün neydi? –

cevap

12

Tüm UIView örnekleri (ve bunlardan türetilen sınıflar), UIView'un görsel görünümünü sağlayan ilişkili bir CALayer nesnesine (katman özelliği aracılığıyla erişilir) sahiptir. CALayer kendi bitmap'ına sahip olabilir, bir bitmap'i başka bir CALayer nesnesiyle paylaşabilir (yansımalar nasıl yapılır), yoksa hiç bitmap'i olmayabilir.

Bir UIView diğer denetimler için bir kapsayıcı görevi gördüğünde, katmanı ile ilişkilendirilmiş bir bitmap'i yoktur, bu nedenle çok az bellek kullanır. Arka plan rengini ayarladığınız anda, bu bitmap desteğinin oluşturulması için bir şey oluşturulması gerekir. UIView alt sınıfı, bazı grafikleri görüntüye çekmek için drawRect uygularsa, aynı şey gerçekleşir.

Tam boyutlu ekran görünümü çok fazla bellek harcadığından, UIScrollView tabanlı bir çözümü uyguladığınızda, yalnızca görüntülenen görünümleri ve her iki tarafı da yüklemeniz gerekir. Onları önceden yüklemeyin.

+0

Bu cevap bana çok yardımcı oluyor, çok büyük UIView'in (konteyner olarak kullanılıyor) bellek kullanımı konusunda endişeleniyorum. – ideawu

İlgili konular