我正在将许多Uiviews加载到UisCrollView上,并试图跟踪他们为什么使用这么多内存。在使用仪器消除过程之后,我发现设置视图的背景颜色会增加记忆使用量4次。

如果我不设置背景颜色,则存储器使用率为4.5megs。一旦我将背景颜色设置为任何红色或ClearColor,内存使用率就会跳至17megs。

这是代码:

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

有人知道会导致这一点吗?

我真正追求的是让背景清晰。如果没有办法解决这个问题,是否有另一种设置Uiview的背景要清楚的方法?

有帮助吗?

解决方案

Uiview的所有实例(以及从其派生的类)都有一个相关的Calayer对象(通过图层属性访问),该对象提供了Uiview的视觉外观。 Calayer可以拥有自己的位图,它可以与另一个Calayer对象共享位图(这是进行反射的方式),也可以没有位图。

当Uiview充当其他控件的容器时,它没有与其图层关联的位图,因此它使用的内存很少。一旦设置了背景颜色,就必须创建衬板图,以便可以渲染一些东西。如果Uiview子类实现DrawRect将一些图形绘制到视图中,则会发生同一件事。

由于全屏大小的视图会消耗大量内存,因此当您实现基于UISCrollView的解决方案时,您只能加载显示的视图和两侧的两侧。不要提前产生大量负载。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top