2010-04-10 71 views
0

当我在视图中使用几个自定义层作为子层时,我目前正面临一些性能问题。多个CALayer性能问题

编程方式创建我的新层后,我将其添加为子层,如:

[self.view.layer addSublayer:myNewSublayer]; 

这一切正常。但是,当反复做这些事情时,我的应用程序开始越来越慢。我很确定会发生这种情况,因为我一直在为视图添加新的子图层。因此,为了解决这个问题,我尝试添加新的子层之前删除一切从self.view.layer,如:

[self.view.layer setContents:nil]; 

不幸的是这并没有解决我的问题。

我的新子层被添加为子后正确释放。我在文书中检查了这个,并且肯定没有内存泄漏。但是,我确实看到每次添加新子图层时内存都在增加(这不会让我感到意外)。

我想我需要找到一个不同的方式,从我的观点的层中删除所有子层。

任何帮助表示赞赏。提前致谢。

回答

1

如果你一直在不断添加子层到你的根层,并没有将其删除,它会很慢& bloaty。您正在使用错误的方法来去除子层:

[[self.view.layer sublayers] makeObjectsPerformSelector:@selector(removeFromSuperlayer)]; 

setContents:设置图层(通常是通过CGImageRef)的图像内容。