【发布时间】:2014-02-27 13:55:09
【问题描述】:
我的视图层次结构,
UIScrollView
UIImageView
叠加视图
OverlayView 是一个透明视图,该视图的目的是徒手绘制。
我取的 OverlayView 与 UIImageView 大小相同。
让我用例子和我得到的一些数据来解释一下,
UIScrollView 处于缩放比例:5 和 UIImageView is of Size: 4000*3000(即实际上 UIImageview 处于缩放状态。)在此级别内存消耗为 50Mb。
每当我添加这个 OverlayView 时,内存都会增加 200Mb。不知道为什么内存急剧增加。
当我开始在覆盖视图上移动手指以进行徒手绘图时,在 3 或 5 秒内内存消耗达到630Mb 左右。
是不是因为 UIView 太大了?
What is the easiest solution to fix this issue?
如果这个问题只是因为大小,那么我可以采取一种解决方案来查看只有可见的大小不是 UIImageView 的大小,但我不喜欢这个,因为我需要做很多点转换得到想要的分数。
Update:
如果我将视图层次结构更改为下面(覆盖视图是 UIImageView 的子视图而不是滚动视图),那么消耗的内存比上面提到的层次结构要少得多。甚至我可以说内存问题完全解决了。
UIScrollView
UIImageView
叠加视图
Still curious to know why this is happening?
【问题讨论】:
-
如果您使用的是模拟器,请在真机上进行测试,然后检查内存消耗。模拟器内存消耗的行为与设备上的不同。
-
你在哪里检查这个内存使用情况? Instruments 或 Xcode(在 Xcode 5 中,Debug Navigator 下显示了内存使用情况)。如果是 Xcode,那么它不会正确显示内存使用情况。检查仪器。
-
我正在设备中进行测试。并使用“分配”工具
-
视图的大小在这里应该不是问题,它很可能是代码中发生的事情。当您说“该视图的目的是徒手绘图”时,您的意思是您实际上是在某个时刻将叠加视图渲染为图像吗?也许如果您发布一些代码,您可能会得到更多有用的答案
-
@lxt: 看我用我的观察更新了这个问题
标签: ios memory-management