我试图在我的可视化中节省内存消耗。我有一个带有包含一些子视图的containerView的scrollView。我想消除scrollView和containerView的CALayer。因此,只有子视图在重绘期间消耗内存等。
我该怎么做?
谢谢, 道格
答案 0 :(得分:5)
iPhone上的所有UIViews和UIView子类都有CALayers支持。你没有太多可以避免这种情况,因为这是UIKit做出的假设。 (在Cocoa for Mac中,您可以指定哪些视图具有CALayers!)
虽然你可以破解一些东西并破坏某些视图的CALayers,但我不推荐它。我写了一些非常复杂的绘画应用程序,我从来没有遇到CALayers消耗大量内存的问题。请记住,在应用程序收到内存警告之前,您可以安全地使用大约25MB的内存。如果你看到你的应用程序流失了大量使用的内存并且你只是画画,那么可能还有另外一个问题。
希望有所帮助,
本
答案 1 :(得分:0)
我的容器层只有1x1点大,因此使用的内存非常少。 (我没有尝试过0x0,也不知道这是否有效。)
使用clipsToBounds
== NO
(默认值),所有子视图仍然可见,即使它们“伸出”其父视图。
如果您的子视图需要接收事件,则需要覆盖-pointInside:withEvent:
以返回YES
以获取容器视图“真实”范围内的点。