Avatar ·

Como obter uma referência ao AppDelegate em Swift: UIApplication.shared.delegate e alternativas

Olá a todos! Comecei a estudar Swift e desenvolvimento para iOS e me deparei com um problema. Preciso acessar alguns dados e métodos que estão armazenados no meu AppDelegate a partir de outros controllers e classes. Sei que o AppDelegate é um singleton criado pelo sistema, mas não entendo exatamente como obter uma referência a ele.

Aqui está uma versão simplificada do meu AppDelegate:

import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
    
    var window: UIWindow?
    var userToken: String? // Token de autorização necessário em muitos controllers
    
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        userToken = "some_token_123"
        return true
    }
    
    func someCustomMethod() {
        print("Método do AppDelegate")
    }
}

Agora, em um dos meus ViewControllers, estou tentando acessar o