【发布时间】:2015-11-08 13:13:04
【问题描述】:
最近,我收到了一个用 Swift 1.2 编写的又大又丑的遗留代码,其中充满了单例和相互引用的管理器。我的任务之一是清理它并到达初始主屏幕 - 当所有管理器、视图、单例都停止并为零时。
我目前跟踪泄漏的方法很简单。在每一个有意义的类中,我都在计算instancesCount,这是一个静态变量,在init 中增加并在反初始化过程中减少。当然,在拥有那些所有成熟工具的 21 世纪,查找分配泄漏并不是一个聪明的主意,但是……我不知道为什么,Xcode 工具并不是很有帮助。根据我的方法,他们表示一切都很好的麻烦。例如,仪器说我的一位经理从未取消初始化 - 这不是真的,因为instanceCount 在初始主屏幕中对于该特定经理为 0。很奇怪。
无论如何,所有这一切都可能以问题结束:如何检测我的实例无法取消初始化的原因以及谁继续引用它?
逐行阅读代码并找到保留周期的位置是毫无意义的,因为代码库非常复杂,而且时间总是有限的。
【问题讨论】:
-
天哪,我希望有一天能禁止单身人士
标签: ios xcode automatic-ref-counting instruments retain-cycle