我正在使用分配来测试我的应用程序的解压缩代码。我使用 Master UITableViewController
来显示 11 个文件名。测试应用截图如下:
当你选择一个时,它会推送一个UIViewController
来显示文件,然后返回到Master UITableViewController
。
现在,如果您重复选择一个单元格,则图表中不会出现内存峰值。但如果从1到2中选择,那么各代之间至少会增加224KB的内存。我从 1 测试到 11。所有这些更改将增加几乎相同的内存。截图如下:
查看细节发现有一个VM:UITableViewCellSelectedBackground(CALayer)
(有的叫VM:CoreAnimation
,但都是一样的224KB)在增长。而且,如果我选择选定的单元格,则不会出现如此大的内存峰值。似乎它们只会在第一次选择一个单元格时创建。
现在我的问题是他们为什么要出来?这是一种内存泄漏吗?如果是,我该如何解决?任何帮助将不胜感激。
更新:
我已经确认与我的解压代码没有任何关系,如果我注释掉解压代码,VM:UITableViewCellSelectedBackground(CALayer)
在选择一个新单元格时仍然存在。
最佳答案
我在模拟器上测试过,结果和你差不多。但是过段时间内存会掉下来。
我不认为这是内存泄漏。当我们选择一个单元格时,系统可能会在它上面添加一个半透明层。
该层在需要时创建,因此它增加了内存。
我确定一旦选择了一个单元格,系统将创建一些对象(某些与图层或图层本身相关的东西),尽管稍后取消选择单元格,但这些对象不会被释放,这些对象可能有一些缓存需要改进下次选择单元格时的性能。
关于ios - 为什么这些VM :UITableViewCellSelectedBackground(CALayer) come out for every UITableViewCell in Allocations?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20879476/