Dar*_*ren 6 ios swift availability mac-catalyst
我已经iOS 15+/macCatalyst 15.0+向我的应用程序添加了一个功能,现在在 M1 iMac 上通过Mac Catalyst (Designed for iPad).
我对我的函数进行了可用性检查,但是当在我的 Mac (macOS 11.6) 上运行时,可用性检查中的代码仍然运行并崩溃。
if #available(iOS 15.0, macCatalyst 15.0, *) {
dataSource.applySnapshotUsingReloadData(fullSnapshot, completion: nil)
} else {
dataSource.apply(fullSnapshot, animatingDifferences: false)
}
Run Code Online (Sandbox Code Playgroud)
我了解Designed for iPadmac Catalyst 在 iOS 上运行,并且我可以确认它正在使用运行,iOS 14.7那么print(UIDevice.current.systemVersion)为什么它运行设置为iOS 15+仅运行的代码?
我的 macCatalyst 检查正确吗?
事实证明这是一个已知问题,并且在 Xcode 13 发行说明中实际提到过。
\n\n\n使用 Apple\nsilicon 在 Mac 上的 iPhone 和 iPad 应用程序中进行可用性检查始终返回 true。这会导致在 macOS 11\nBig Sur 中运行的 iOS 应用看到 iOS 15 API 可用,从而导致崩溃。这\仅影响 Mac App Store 中使用 \xe2\x80\x9cMy\nMac(专为 iPhone 设计)\xe2\x80\x9d 或 \xe2\x80\x9cMy Mac(专为 iPad 设计)\xe2\x80 构建的应用程序\x9d 运行\n目的地。它不会影响 Mac Catalyst 应用程序。(83378814)
\n
\n\n解决方法:使用以下代码检查 iOS 15 可用性:
\n
if #available(iOS 15, *), ProcessInfo.processInfo.operatingSystemVersion.majorVersion >= 15 {\nRun Code Online (Sandbox Code Playgroud)\n
我需要检查这一点,但如果在 Mac 上作为 iOS 应用程序运行,我需要添加功能,这似乎可以解决问题:
if ProcessInfo.processInfo.isiOSAppOnMac {
// blah blah yada yada etc etc
}
Run Code Online (Sandbox Code Playgroud)
还有一个isMacCatalystApp价值。
| 归档时间: |
|
| 查看次数: |
1443 次 |
| 最近记录: |