Swift 显示视图控制器太慢

Swift 显示视图控制器太慢,swift,firebase,viewdidload,presentviewcontroller,viewdidappear,Swift,Firebase,Viewdidload,Presentviewcontroller,Viewdidappear,我已经在我的Swift应用程序中实现了Firebase Google登录。我想在开始时检查它是否已经是一个登录用户。我是这样做的: override func viewDidLoad() { super.viewDidLoad() GIDSignIn.sharedInstance()?.presentingViewController = self GIDSignIn.sharedInstance().delegate = self }

我已经在我的Swift应用程序中实现了Firebase Google登录。我想在开始时检查它是否已经是一个登录用户。我是这样做的:

override func viewDidLoad() {
        super.viewDidLoad()
        GIDSignIn.sharedInstance()?.presentingViewController = self
        GIDSignIn.sharedInstance().delegate = self

    }

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(false)

        if Auth.auth().currentUser != nil {

          let storyboard = UIStoryboard(name: "Main", bundle: nil)
          let vc = storyboard.instantiateViewController(withIdentifier: "feedVC")
          vc.modalPresentationStyle = .fullScreen
          self.present(vc, animated: false)

        }
    }
现在我的问题是:它按我的意愿工作,但速度相当慢。在显示主页之前,我仍然可以快速查看登录屏幕

现在,如果我想将currentUser检查添加到viewDidLoad,应用程序不会检查用户是否已经登录

有什么建议吗?

在主线程上执行

 override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(false)

        if Auth.auth().currentUser != nil {
    DispatchQueue.main.async {
     let storyboard = UIStoryboard(name: "Main", bundle: nil)
              let vc = storyboard.instantiateViewController(withIdentifier: "feedVC")
              vc.modalPresentationStyle = .fullScreen
              self.present(vc, animated: false)
    }
}

@janswoboda我对这个答案感到困惑。问题所在已经在主线程上运行,因此添加另一个DispatchQueue对这个用例没有任何作用。。。这不是根本原因。。。当他推这个控制器时,它有根本原因…有时我也会面临这个问题。。。转移到主线程解决了这个问题。。。不知道原因。。。这就是我提出这个解决方案的原因。在这个问题中,没有任何东西会以任何方式变慢,因为您没有进行任何Firebase网络呼叫或处理快速本地数据之外的任何事情。到底什么是慢的?您问题中的代码已经在主线程上运行,因此接受答案中的代码实际上没有任何影响。然而,可能还有更多的问题,因此需要更多的信息才能真正提供准确的答案。@Jay在我的实际iPhone上我没有延迟,但在模拟设备上我有一些小的延迟。我不知道为什么。但最终这没什么大不了的,因为它在真正的iPhone上工作。我担心的是,你会遇到更大的问题,所以最好先解决它,而不是等到它爆炸后再解决。提供的答案不是一个长期的解决方案,因为它没有任何作用。现在还不清楚你在哪里被耽搁了,所以如果你想要更多的帮助,请用更多的信息更新问题,我们可以看一下。