SwiftUI最佳实践:View应该具有单例的常量,是否应该在环境中传递它们?

时间:2020-11-08 07:10:12

标签: swiftui singleton swiftui-environment

在使用Core Data的SwiftUI项目的Xcode 12模板中,Apple提供了以下代码:

import SwiftUI

@main
struct CoreDataApp: App {
    let persistenceController = PersistenceController.shared

    var body: some Scene {
        WindowGroup {
            ContentView()
                .environment(\.managedObjectContext, persistenceController.container.viewContext)
        }
    }
}

在这种情况下,persistenceController是一个单例。

下面的代码有什么区别,其中的代码是同时初始化并传递的?为什么我们对单身人士使用常数?

import SwiftUI

@main
struct CoreDataApp: App {

    var body: some Scene {
        WindowGroup {
            ContentView()
                .environment(\.managedObjectContext, PersistenceController.shared.container.viewContext)
        }
    }
}

此外,将此单例提供给环境是否有任何优势?我们不能直接在子视图中使用PersistenceController.shared.container.viewContext吗?

我之所以问是因为我的应用程序中没有几个服务单例,但是我不想从主App而是在子视图中对其进行初始化。

0 个答案:

没有答案