iOS Swift - 调试内存泄漏

标签 ios swift memory-leaks

我正在开发一个应用程序,它有严重的内存泄漏。 到目前为止,我观察到的是,我使用该应用程序的次数越多,它消耗的内存就越多。我最初认为这可能是其导航的处理方式。我们有一个用 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 实际上都被解雇了,但内存使用量并没有适当下降。 现在我开始使用“调试内存图”。 这是我得到的一个例子: enter image description here 正如您所看到的,我找不到任何与这些内存泄漏相关的提示。我无法从图表中看出任何信息。

越来越多地使用该应用程序给我带来了与以下内容相关的内存泄漏: CoreFoundation、libswiftCore.dylib 和 Foundation。

我只是迷失了方向,我不知道如何继续调试这些泄漏,因为没有其他信息可以帮助我查明导致泄漏的原因/swift 文件。

PS:我不是这个项目的唯一开发者。我几乎是在前一位开发人员之后进行工作的,而且我到处都看到了糟糕的编码实践。重写不是一个可行的选择。

最佳答案

过去我使用 Instruments 来调试内存泄漏。我阅读了苹果文档来了解如何使用 Instruments,它非常有帮助 - 特别是第一部分:查找内存泄漏。我发现了使用调试内存图无法找出的泄漏。

Instruments User Guide: Finding Memory Leaks

关于iOS Swift - 调试内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45692638/

相关文章:

ios - 如何从 iOS 中的详细 View 访问主人的 TableView

ios - Kofax Capture Mobile SDK 是否有适用于 iOS 的试用版?

ios - 如何在 swift 中以编程方式配置 openVPN?

arrays - 将 [AnyObject] 向下转换为 [String] 和 [PFObject]

c - 如何消除由 strdup 引起的泄漏?

ios - 使用 NSURLSession 上传多张图片

ios - 是否可以使用经典蓝牙定位估计信标?

unicode 字符的 Swift 字符串文字是错误的

ubuntu - 我如何理解 pthread_create 内存使用情况?

objective-c - 使用带有 ARC 的 Xcode 的对象的潜在泄漏