我在swift 4/XCode 9'中学习Google Signin Firebase认证。
在Firebase文档中,它们将AppDelegate.swift
声明为GIDSignInDelegate
。我通常希望视图控制器delegate
管理登录、注销等操作。。。
有人能解释一下在应用程序中做这件事与在应用程序中做这件事有什么不同吗。使用其中一个而不是另一个有利弊吗?
我个人认为在delegate
中或者外包给一个类更容易做到这一点,因为执行segue和其他操作更容易,但也许不是最好的解决方案?
最佳答案
Firebase文档建议AppDelegate
是正确的,因为它是第一个活跃的对象,并由应用程序共享。但是您的GIDSignInDelegate
不一定既不是AppDelegate
也不是视图控制器。这完全取决于您的项目架构(结构)。如果你的应用程序很大,并且你正在将你的逻辑分成几个“模块”,你可以创建一个共享的(单例)对象,比如SessionService
或LoginService
等,当应用程序启动时,这些对象可以被实例化,并充当你的GIDSignInDelegate
。