SwiftUI:viewDidLoad 和 viewWillDisappear 的等价物是什么

SwiftUI: what is the equivalent stuff with viewDidLoad and viewWillDisappear

我曾经把GCDWebServer的start()stop()放在viewDidLoadviewWillDisappear中。

现在在 SwiftUI 中,我应该将它们放在哪个等效位置? 我尝试将服务器 init() 放入 scene(_ scene: UIScene, willConnectTo,并将服务器 deinit() 放入 sceneDidEnterBackground(_ scene:

启动应用程序后,服务器成功启动,当我将应用程序推送到后台时,服务器停止了。那很好用。但是当应用程序returns再次到前台时,服务器不会再次启动。

代码:

class BrandViewController: UIViewController {
    let mockServer = GCDServer()
    let tableView = UITableView()
    private let products = ProductAPI.loadProducts()
    let searchController = UISearchController(searchResultsController: nil)
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        navigationItem.searchController = searchController
        
        self.navigationController?.navigationBar.prefersLargeTitles = true
        navigationItem.title = "Search"
        
        view.backgroundColor = .white
        
        tableView.register(ProductCell.self, forCellReuseIdentifier: "productCell")
        tableView.dataSource = self
        tableView.delegate = self
        view.addSubview(tableView)
        
        // Start GCDWebServer
        mockServer.initWebServer()
    }
    
    override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
        tableView.frame = view.bounds
    }
    
    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        mockServer.stopWebServer()
    }
}

如果您在 sceneDidEnterBackground 上销毁服务器,那么解决方案是将服务器创建(并且,正如我假设的开始)从 scene(_ scene: UIScene, willConnectTo 转移到 sceneWillEnterForeground