在 运行 时间可靠地检测 iOS 上的 GPU 系列 3

Detecting GPU family 3 on iOS reliably at run time

我在代码中使用此函数检测 A9 或更高版本的设备:

    public static var gpuFamily3AndHigh:Bool = {
      return ARConfiguration.isSupported //Hack to know A9 or more
    }

但现在 Apple 拒绝了该代码,因为该应用程序没有 ARKit 功能。如何在 iOS 13 和 iOS 12 上不使用 ARKit 来识别它。在 iOS 13 上,我知道我可以做:

  public static var gpuFamily3AndHigh:Bool = {
   // return ARConfiguration.isSupported //Hack to know A9 or more
    
    guard let device = MTLCreateSystemDefaultDevice() else { return false }
    
    return device.supportsFamily(.apple3)
}()

但我不知道 .apple3 是否比 .common3 更合适,还有我在 iOS 12 上做什么?

如果我读 this document 正确,您应该在 API 可用时检查支持的系列(像您一样),否则返回检查特定功能集。

如果您真的想专门检查 A9 及更高版本,系列 .apple3 和功能集 .iOS_GPUFamily3_v1 似乎是可行的方法。