我正在开发一个应用程序,它有严重的内存泄漏。 到目前为止,我观察到的是,我使用该应用程序的次数越多,它消耗的内存就越多。我最初认为这可能是其导航的处理方式。我们有一个用 Objective C 编写的滑动菜单框架。在它的 Swift 文件( header 已处理)中,我添加了以下代码:
if let app = UIApplication.shared.delegate as? AppDelegate, let window = app.window {
if let viewControllers = window.rootViewController?.childViewControllers {
for viewController in viewControllers {
print("😀" + viewController.debugDescription)
}
}}
打印函数表明所有 View Controller 实际上都被解雇了,但内存使用量并没有适当下降。 现在我开始使用“调试内存图”。 这是我得到的一个例子: 正如您所看到的,我找不到任何与这些内存泄漏相关的提示。我无法从图表中看出任何信息。
越来越多地使用该应用程序给我带来了与以下内容相关的内存泄漏: CoreFoundation、libswiftCore.dylib 和 Foundation。
我只是迷失了方向,我不知道如何继续调试这些泄漏,因为没有其他信息可以帮助我查明导致泄漏的原因/swift 文件。
PS:我不是这个项目的唯一开发者。我几乎是在前一位开发人员之后进行工作的,而且我到处都看到了糟糕的编码实践。重写不是一个可行的选择。
最佳答案
过去我使用 Instruments 来调试内存泄漏。我阅读了苹果文档来了解如何使用 Instruments,它非常有帮助 - 特别是第一部分:查找内存泄漏。我发现了使用调试内存图无法找出的泄漏。
关于iOS Swift - 调试内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45692638/