0

我正在 SwiftUI 上开发一个 IOS 应用程序,用户可以在其中加入组并与其他用户交互,我很好奇为当前用户的会话使用 ObservableObject 单例类的后果是什么,它将直接替换使用的典型 EnvironmentObject以同样的方式。我想要做的是消除直接将 EnvObj 视图模型注入到后续视图模型中。

因此,而不是这个(在整个应用程序的许多地方发生):

class ChildViewModel: ObservableObject { 
    let session: SessionViewModel

    init(session: SessionViewModel, ...) { 
        self.session = session
        ...
    }

    ...
}

它会变成:

class ChildViewModel: ObservableObject {
    let session = Session.shared

    init(...) { ... }

}

其中 Session 类似于:

class Session: ObservableObject { 
    @Published var user: User?
    @Published var usersGroups: [GroupModel] = []

    // As singleton
    static let shared = Session()
    private init() { }

    // As environmentObject - Initialized after user is authenticated
    init() { 
        ...
        fetchUsersGroups()
    }

    func fetchUsersGroups() async { 

    }
}

如果我知道在初始化 ChildViewModel 时将在此时定义用户,我想我可以创建这个单例类,我可以在用户登录后在应用程序中的任何位置拉取它。

这种实施会产生什么问题?

4

0 回答 0