0

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

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

[self.view.layer addSublayer:myNewSublayer]; 

这工作得很好。但是,当一遍又一遍地这样做时,我的应用程序开始越来越慢。我很确定会发生这种情况,因为我不断地在我的视图中添加一个新的子层。因此,为了解决这个问题,我尝试在添加新子层之前从 self.view.layer 中删除所有内容,例如:

[self.view.layer setContents:nil];

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

添加为子图层后,我的新子图层已正确发布。我在仪器中检查了这一点,绝对没有内存泄漏。但是,我确实看到每次添加新子层时内存都会增加(这并不会让我感到惊讶)。

我想我需要找到一种不同的方法来从我的视图层中删除所有子层。

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

4

1 回答 1

1

如果你不断地向根层添加子层而不是删除它们,它会变得缓慢而臃肿。您使用错误的方法来删除子层:

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

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

于 2011-02-01T12:12:36.877 回答