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