2010-04-10 75 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)的圖像內容。