2014-11-07 36 views
0

我正在寫一個iOS 8.1應用程序,它會繪製條形圖。用戶將能夠過濾從中繪製圖表的數據集,並動態更改圖表。iOS 8中的SpriteKit:我應該緩存我的SKNodes嗎?

每個圖表將包含約2000個SKNodes(簡單框)。每次選擇改變時,先前使用的SKNode將被丟棄,並且將計算一個全新的組。

我估計用戶在每次使用應用程序時不會重新計算超過20次的圖表。

我想知道回收以前使用的SKNodes是否合理,以避免分配,釋放和內存碎片的成本及其對感知性能的影響,或者,如果「僅」有40,000個SKNodes,它會是過於複雜的軟件。

如果緩存確實有意義,那麼作爲緩存的高效Swift數據結構是什麼?

+0

這是很多節點!做一個快速測試,看看只有2-4萬個節點的性能是否可以接受。在(較舊/最慢)設備上測試。 – LearnCocos2D 2014-11-07 08:10:08

回答

2

您應該避免構建緩存,直到您遇到可衡量的性能問題。如果你有一個,然後做一個緩存。

如果您必須構建一個,我會將未使用的節點存儲在NSCache實例中,以便在內存壓力下清除它們。您可以遵循UITableView/UICollectionView模式 - 使節點出列,準備重用,設置並使用它。

+0

感謝您的提示。我是Cocoa的新手,不瞭解NSCache。 – Eduardo 2014-11-07 00:39:25

+0

我看了NSCache的文檔,似乎需要一個鍵才能存儲和檢索一個對象。你將如何使任何節點出隊,比如使用UITableViewCells? – Eduardo 2014-11-07 00:49:17

相關問題