了解分配仪器保留计数

Posted

技术标签:

【中文标题】了解分配仪器保留计数【英文标题】:Understanding Allocations Instrument Retain Counts 【发布时间】:2016-05-10 21:20:15 【问题描述】:

我有一个未发布的视图控制器,尽管据我所知,我将所有代表设置为零,删除所有手势等,但即使使用 Instruments,我也很难理解保留视图控制器的原因.我启用了“记录保留计数”选项。

我的 UIViewController 的名称是 TDTPaintingViewController,正在由 TDTOilistOptionsViewController 加载和卸载。

我不清楚什么拥有保留计数,我很困惑为什么它会多次显示内容,即使我单步执行我的代码它只调用一次(例如 TDTOilistOptionsViewController.loadPaintingView())。

附加的是仪器跟踪。如果有人可以帮助解释它,我将不胜感激。它不仅可以帮助解决这个问题,还可以帮助我了解将来如何使用该工具。

Allocations Instruments.trace

【问题讨论】:

【参考方案1】:

使用 Instrument Leak 模板是跟踪保留周期和未释放对象的更好方法。

根据您的跟踪文件,blockaddChildViewController 是一个很好的起点,尤其是这个:

【讨论】:

谢谢 - 我看了一下 Leak 并不能真正分辨出区别。什么调用 addChildViewController?我正在使用 UINavigationController 的 pushViewController 方法来呈现绘画视图控制器。当我双击您推荐的行时,它会将我带到汇编代码。 我找到了 - 我以为我正在删除视图控制器视图并将其设置为 nil 但我没有!

以上是关于了解分配仪器保留计数的主要内容,如果未能解决你的问题,请参考以下文章

计数器

下面提到的 NSStrings 分配的保留计数是多少

通用计数器的应用

实验二

tableView:cellForRowAtIndexPath 的保留计数:

Xcode 6.1.1 仪器不能在设备上使用计数器模板