当我在视图中使用多个自定义图层作为子图层时,我目前面临一些性能问题。
以编程方式创建新图层后,我将其添加为子图层,如:
[self.view.layer addSublayer:myNewSublayer];
这很好用。但是,当我的应用程序一遍又一遍地开始减速越来越慢时。我很确定会发生这种情况,因为我不断在我的视图中添加一个新的子图层。因此,为了解决这个问题,我尝试在添加新子层之前从self.view.layer中删除所有内容,例如:
[self.view.layer setContents:nil];
不幸的是,这并没有解决我的问题。
我的新子图层在添加为子图层后正确释放。我在仪器中检查了这一点,肯定没有内存泄漏。但是,我确实看到每次添加新的子层时内存都会递增(这不会让我感到惊讶)。
我想我需要找到一种不同的方法来从视图的图层中删除所有子图层。
任何帮助表示赞赏。提前谢谢。
答案 0 :(得分:1)
如果你不断向你的根图层添加子图层而不删除它们,那么它会变慢bloaty。您使用错误的方法删除子图层:
[[self.view.layer sublayers] makeObjectsPerformSelector:@selector(removeFromSuperlayer)];
setContents:
设置图层的图像内容(通常通过CGImageRef
)。