SwiftUI - 内存泄漏

Bob*_*Bob 5 xcode memory-leaks ios swift swiftui

环境

- 卡特琳娜 10.15.7
- Xcode 12.0
- Swift 5.0

简要说明

  • 问题
  • `AppDelegate` 内存泄漏。
  • 目标
  • 修复它们并避免再次发生。
  • 导致问题的原因可能是什么,我应该在哪里查看或调查时间?

几个月来,我一直在使用 SwiftUI 开发一个应用程序,并创建了我想要的测试版的大部分功能。
现在我可以从仪器工具中看到内存泄漏,屏幕截图如下。

在此处输入图片说明

它指向类的第一行,AppDelegate并没有告诉我们是什么导致了问题。随着我们使用该应用程序,泄漏检测的数量会增加。

如果您需要,我很乐意提供更多信息。
谢谢你。


代码

AppDelegate.swift
import UIKit
import FacebookCore
import FBSDKCoreKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        ApplicationDelegate.shared.application( application, didFinishLaunchingWithOptions: launchOptions )
        return true
    }
    
    func application( _ app:UIApplication, open url:URL, options: [UIApplication.OpenURLOptionsKey :Any] = [:] ) -> Bool { ApplicationDelegate.shared.application( app, open: url, sourceApplication: options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String, annotation: options[UIApplication.OpenURLOptionsKey.annotation] )
    }

    // MARK: UISceneSession Lifecycle

    func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
        // Called when a new scene session is being created.
        // Use this method to select a configuration to create the new scene with.
        return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
    }

    func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {
        // Called when the user discards a scene session.
        // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.
        // Use this method to release any resources that were specific to the discarded scenes, as they will not return.
    }
}
Run Code Online (Sandbox Code Playgroud)