启动时未调用应用程序(_application:UIApplication,didFinishLaunchingWith



当我在模拟器中的多应用程序UI中向上滑动以杀死应用程序并重新启动它时,不会调用application (didFinishLaunchingWithOptions)方法,每次只显示登录屏幕。我不明白发生了什么,它真的违背了检查用户是否从firebase登录的目的,如果在再次启动应用程序时甚至没有调用该方法,我真的很感激你的帮助!(这与我看到的SceneDelegate方法有关吗?据我所知,无论何时启动应用程序,都应该调用didFinishLaunching方法(

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
print("---------appDelegate didFinishLaunchingWithOptions called!---------------")
window = UIWindow(frame: UIScreen.main.bounds)
window?.makeKeyAndVisible()
window?.rootViewController = MainViewController()
FirebaseApp.configure()
return true
} 

以下是请求的MainViewController的代码

import UIKit
import Firebase
class MainViewController: UIViewController {
var handle: AuthStateDidChangeListenerHandle?
override func viewDidLoad() {
super.viewDidLoad()
DispatchQueue.main.async {
self.handle = Auth.auth().addStateDidChangeListener { (auth, user) in
if user == nil {
print("nil user -----------")
self.perform(#selector(self.showHomeController), with: nil, afterDelay: 3)
} else {
print("non nil user --------")
self.perform(#selector(self.showWelcomeController), with: nil, afterDelay: 3)
}
}
}
}
@objc func showWelcomeController () {
present(WelcomeViewController(), animated: true, completion: nil)
}
@objc func showHomeController () {
present(HomeViewController(), animated: true, completion: nil)
}
}

调用了--------appDelegate didFinishLaunchingWithOptions!---------------当项目在模拟器中构建和打开时,只打印一次

免责声明:我是iOS应用程序开发的新手。

问题只是"在sim中重新启动"的方式。如果你杀死应用程序,然后点击模拟器中的应用程序图标,你就不再在Xcode中运行;你是独立跑步。因此,您不再进行任何调试;Xcode控制台中没有出现print消息,您不会在断点等处停止。

解决方案是:通过告诉Xcode重新构建并运行来重新启动,而不是在模拟器中点击应用程序的图标。

向上滑动并杀死应用程序的操作会破坏调试器链接。因此,如果你在模拟器中点击应用程序本身重新启动应用程序,你将不再有带有Xcode的调试器链接。这就是为什么你再也看不到这些信息被打印出来的原因。

您必须从Xcode重新启动才能再次打印启动消息。

如果您还有其他问题,请单独发布。它将更容易被每个人跟踪和响应。

最新更新