gpt4 book ai didi

swiftui - 在不使用 SwiftUI 生命周期的情况下,无法对 URL、NSUserActivity 和其他外部事件使用场景方法

转载 作者:行者123 更新时间:2023-12-03 17:23:37 24 4
gpt4 key购买 nike

我正在使用新的“纯”SwiftUI AppScene结构而不是 AppDelegate .
我的一些观点接受使用 onOpenURL(perform:) 的自定义 url 方案和用户事件.一切都按预期工作。
但是,从 Beta 6 开始,Xcodes 会给出以下运行时警告:

runtime: SwiftUI: Cannot use Scene methods for URL, NSUserActivity, and other External Events without using SwiftUI Lifecycle. Without SwiftUI Lifecycle, advertising and handling External Events wastes resources, and will have unpredictable results.


我到底做错了什么? 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))
}
}
}

最佳答案

SwiftUI 生命周期是指渲染为场景子级的 View ,即 WindowGroup通常在 App 主体中返回的结构。
其含义基本上是,如果您将“辅助” View 附加到场景,例如 MacOS 的命令,它们就不能使用像 .onContinuedUserActivity 这样的方法。并且会产生这个错误。在这些情况下传达 View 状态更改应改为使用 FocusedValues,其中订阅 View 具有 @FocusedBinding@FocusedValue , 发布 View 注入(inject) .focusedValue(\.someKeyPath, $interestingState)

关于swiftui - 在不使用 SwiftUI 生命周期的情况下,无法对 URL、NSUserActivity 和其他外部事件使用场景方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63599959/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com