我正在编写一个可以绘制条形图的iOS 8.1应用程序。用户将能够过滤绘制图表的数据集,动态更改图表。
每个图表将由大约2,000个SKNode(简单框)组成。每次选择更改时,将丢弃先前使用的SKNode,并计算一个全新的集合。
我估计,每次使用该应用程序时,用户不会重新计算图表超过20次。
我想知道回收以前使用过的SKNode是否有意义,以避免分配,释放和内存碎片的成本,以及它们对感知性能的影响,或者,如果“只有”40,000个SKNode它将会结束使软件复杂化。
如果缓存有意义,那么作为缓存的高效Swift数据结构是什么?
答案 0 :(得分:2)
在出现可衡量的性能问题之前,应避免构建缓存。如果你有一个,那就制作一个缓存。
如果你必须构建一个,我会将未使用的节点存储在NSCache
实例中,以便可以在内存压力下清除它们。您可以按照UITableView
/ UICollectionView
模式 - 将节点出列,准备重用,进行设置,然后再使用它。