iOS CALayer内存只在设备上泄漏

时间:2011-06-03 06:32:46

标签: iphone ios memory-leaks calayer

“仪器”工具报告CALayer的内存泄漏。我有一个自定义类,UIViewController的子类;在viewDidLoad()中,我使用CAGradientLayer实例化一个视图,并将此视图作为当前视图的子视图插入,例如:

UIControl *view = [[[UIControl alloc] initWithFrame:CGRectMake(10, 10, 460, 220)] autorelease];
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = view.bounds;
gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor whiteColor] CGColor], (id)[[UIColor colorWithRed:0.85 green:0.85 blue:0.85 alpha:1.0] CGColor],nil];
gradient.startPoint = CGPointMake(0, 0);
gradient.endPoint = CGPointMake(1, 1);
[view.layer insertSublayer:gradient atIndex:0];
view.layer.masksToBounds = YES;
[view.layer setCornerRadius:5];

[self.view insertSubview:view atIndex:1];

当我在模拟器中运行代码时,一切都很好。但是,当我在设备上运行它(iOS 4.3.3)时,Instruments工具会报告CALayer的泄漏。当我写出这段代码时,没有泄漏。 这是什么问题?

编辑:我发现只有将子视图插入到具有滚动视图的视图中才会泄漏(因此我在视图和滚动视图之间插入了带有渐变calayer的子视图)。

1 个答案:

答案 0 :(得分:0)

发布了 uiview和 层 因为模拟器在系统配置中运行所以不会出现问题 但与系统相比,设备的内存更少