我有一个 watchOS 应用程序,有两个屏幕。当我导航到第二个屏幕时,我在控制台中收到以下警告:
ScrollView contentOffset 绑定已读取;这将导致视图性能非常低效,因为只要其 contentOffset 发生变化,ScrollView 的内容就会更新。在绑定创建者和 ScrollView 之间没有父子关系的视图中读取 contentOffset 绑定以避免这种情况。
这似乎与在第二个屏幕中使用 @EnvironmentObject 进行选择器选择有关。如果我删除 @EnvironmentObject 并将其替换为 @State 以进行选择器选择,则不会发生警告。(但是更新不会反映在第一个屏幕上)。
为什么会发生这种情况?我可以做什么来阻止这个警告?
这是我的代码:
第一个屏幕:
import SwiftUI
struct ContentView: View {
@EnvironmentObject var itemManager: ItemManager
var body: some View {
List {
ForEach(itemManager.items.indices) { index in
NavigationLink(destination: ItemView(index: index)) {
VStack(alignment: HorizontalAlignment.leading) {
HStack {
Text(self.itemManager.items[index].name)
Spacer()
Text("x")
Text(String(self.itemManager.items[index].quantity))
}
Text(self.itemManager.items[index].type.rawValue).font(.footnote)
}
}
}
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView().environmentObject(ItemManager())
}
}
Run Code Online (Sandbox Code Playgroud)
第二个屏幕:
import …Run Code Online (Sandbox Code Playgroud) 当我在 XCode 模拟器中运行应用程序时,它的应用程序支持目录位于:
~/Library/Developer/CoreSimulator/Devices/425816A6-9CE8-4884-9D74-B8246D3BA2C5/data/Containers/Data/PluginKitPlugin/729EDADB-CD24-4DFE-A3A4-C378C5743803/Library/Application%20Support/
Run Code Online (Sandbox Code Playgroud)
但是,当我对 SwiftUI 文件使用画布预览时,Application Support 目录在哪里?