我正在使用新的“纯”SwiftUIApp和Scene结构而不是AppDelegate.
我的一些视图接受自定义 url 方案和使用onOpenURL(perform:). 一切都按预期工作。
但是,从 Beta 6 开始,Xcodes 给出以下运行时警告:
运行时:SwiftUI:不能在不使用 SwiftUI 生命周期的情况下对 URL、NSUserActivity 和其他外部事件使用场景方法。如果没有 SwiftUI Lifecycle,广告和处理外部事件会浪费资源,并且会产生不可预测的结果。
我到底做错了什么?什么是SwiftUI生命周期指什么?
这就是我的主要App结构的样子。我将一些默认修饰符附加到主视图。
@main
struct MyApp: App {
@StateObject var viewModel = GlobalViewModel()
var body: some Scene {
WindowGroup {
MainView()
.applyingDefaultColors()
.environmentObject(viewModel)
.environmentObject(TranslationProvider())
.toggleStyle(SwitchToggleStyle(tint: .accentColor))
}
}
}
Run Code Online (Sandbox Code Playgroud)
SwiftUI 生命周期是指渲染为场景子级WindowGroup的视图,即通常在应用程序主体中返回的结构。
这基本上意味着,如果您将“辅助”视图附加到场景,例如 MacOS 的命令,它们将无法使用类似的方法.onContinuedUserActivity,并且会产生此错误。在这些情况下,通信视图状态更改应使用 FocusedValues,其中订阅视图具有 或@FocusedBinding,@FocusedValue发布视图注入.focusedValue(\.someKeyPath, $interestingState)
| 归档时间: |
|
| 查看次数: |
444 次 |
| 最近记录: |