【发布时间】:2021-10-04 10:01:02
【问题描述】:
我在我的应用程序中添加了一个iOS 15+/macCatalyst 15.0+ 函数,现在它在通过Mac Catalyst (Designed for iPad) 在 M1 iMac 上运行时崩溃。
我对我的函数进行了可用性检查,但是在我的 Mac (macOS 11.6) 上运行时,可用性检查中的代码仍然运行并崩溃。
if #available(iOS 15.0, macCatalyst 15.0, *) {
dataSource.applySnapshotUsingReloadData(fullSnapshot, completion: nil)
} else {
dataSource.apply(fullSnapshot, animatingDifferences: false)
}
我了解Designed for iPad mac 催化剂作为 iOS 运行,我可以使用 print(UIDevice.current.systemVersion) 确认它作为 iOS 14.7 运行,那么为什么它运行的代码设置为仅在 iOS 15+ 上运行?
我的 macCatalyst 检查对吗?
【问题讨论】:
-
也许可以试试
#if targetEnvironment(macCatalyst)进行 Mac 催化剂检测 -
检查中的代码不运行!
-
事实证明,
macCatalyst检查不起作用,因为它作为iOS应用程序而不是完整的催化剂运行。但是,这并不能解释为什么iOS 15检查不起作用。 -
在 macOS 11.4 上运行时环境检查工作正常。
-
我在
M1mac 上运行iOS应用程序,这显然与运行完整的macCatalyst应用程序不同。该应用程序就像iOS一样运行,因此targetEnvironment失败。但我已经发布了我从 Apple 得到的答案。
标签: ios swift mac-catalyst availability