1

我曾经把 GCDWebServer 的start()andstop()放在viewDidLoadand中viewWillDisappear

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

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

编码:

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()
    }
}
4

1 回答 1

0

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

于 2020-06-28T08:18:18.353 回答