我想让我的应用程序能够在iOS 13(实际上我希望是iOS 13.5)和iOS 14上部署,因此我编写了以下代码进行测试:
struct ContentView: View {
var body: some View {
if #available(iOS 14.0, *) {
List {
Text("Cool!")
Text("Cool!")
Text("Cool!")
Text("Cool!")
}
.listStyle(InsetGroupedListStyle())
} else {
List {
Text("Cool!")
Text("Cool!")
Text("Cool!")
Text("Cool!")
}
.listStyle(GroupedListStyle())
.environment(\.horizontalSizeClass, .regular)
}
}
}
构建 iOS 14 版本很顺利,但是当我在真实手机和模拟器上构建 iOS 13.5 版本时,在 AppDelegate 中会出现以下错误:
Thread 1: EXC_BAD_ACCESS (code=1, address=0x0)
我已经确保将iOS部署目标设置为iOS 13.5,并且正在使用Xcode 12 beta 2。我尝试过使用beta 1,但结果相同(可能是因为我使用的是同一文件?)。我不确定我是否做错了什么或者这是否是一个错误。当仅使用iOS 13.5的代码(没有if#available)时,它可以正常工作,但仅当我添加该检查器时,我的问题才会出现。任何帮助都将不胜感激!
.listStyle(InsetGroupedListStyle())
,我们就可以在iOS 13上编译和运行良好,证明这是问题的根源。但仅仅存在这个修改器,并没有实际执行,不应该导致崩溃。你不能通过条件编译来解决问题,因为你无法测试版本。 - mattif
,但你会认为编译器会报错。 - matt