その種のコードを app デリゲートにまったく配置しないでください。そうしないと、 Massive App Delegateに直面することになります。代わりに、コードをより意味のある部分にリファクタリングし、適切な部分を適切な場所に配置することを検討する必要があります。この場合、必要なのは、アプリの準備ができたらコードがこれらの関数を 1 回だけ実行していることを確認することだけです。したがって、このinit
方法は素晴らしいものになる可能性があります。
@main
struct MyApp: App {
init() {
setupFirebase()
}
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
private extension MyApp {
func setupFirebase() {
FirebaseConfiguration.shared.setLoggerLevel(.min)
FirebaseApp.configure()
}
}
AppDelegate ?
独自のカスタム クラスを作成し、それを として割り当てることができますdelegate
。ただし、割り当て前に発生するイベントでは機能しないことに注意してください。例えば:
class CustomDelegate: NSObject, UIApplicationDelegate {
static let Shared = CustomDelegate()
}
以降:
UIApplication.shared.delegate = CustomDelegate.Shared
通知の監視
ほとんどのAppDelegate
メソッドは、新しいクラスを定義する代わりに、手動で監視できる通知を実際に監視しています。例えば:
NotificationCenter.default.addObserver(
self,
selector: #selector(<#T##@objc method#>),
name: UIApplication.didBecomeActiveNotification,
object: nil
)
ネイティブAppDelegate
ラッパー
@main
app デリゲートを構造体に直接注入できます。
@UIApplicationDelegateAdaptor(CustomDelegate.self) var appDelegate
注: 使用AppDelegate
AppDelegate を追加すると、デフォルトのマルチプラットフォーム サポートが無効になり、プラットフォームを手動で確認する必要があることに注意してください。