Mic*_*ord 5 iphone memory-management background-color uiview
我正在将一些UIViews加载到UIScrollView上,并试图找出他们为什么要使用这么多内存.在使用Instruments消除过程之后,我发现设置视图的背景颜色会使内存使用量增加4倍.
如果我没有设置背景颜色,则内存使用量约为4.5美分.一旦我将背景颜色设置为任何redColor或clearColor,内存使用量就会跳至17megs.
这是代码:
ThumbnailView *thumbView = [[ThumbnailView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 225.0f, 320.0f)];
thumbView.tag = aCounter;
thumbView.backgroundColor = [UIColor clearColor];
Run Code Online (Sandbox Code Playgroud)
有谁知道是什么原因引起的?
我真正追求的是背景清晰.如果没有办法解决这个问题,是否还有另一种方法可以将UIView的背景设置为清晰?
U62*_*U62 12
UIView的所有实例(以及从它派生的类)都有一个关联的CALayer对象(通过layer属性访问),它提供了UIView的视觉外观.CALayer可以拥有自己的位图,它可以与另一个CALayer对象共享位图(这是反射的方式),也可以没有位图.
当UIView充当其他控件的容器时,它没有与其图层关联的位图,因此它使用的内存非常少.一旦设置了它的背景颜色,就必须创建该支持位图,以便有一些东西要渲染.如果UIView子类实现drawRect以将一些图形绘制到视图中,则会发生同样的事情.
因为全屏大小的视图会消耗大量内存,所以当您实现基于UIScrollView的解决方案时,您应该只加载显示的视图和两侧的视图.不要提前创建它们的负载.