"if (@available(iOS 13.0, *))" 无法在 Xcode 10.3 中编译
"if (@available(iOS 13.0, *))" doesn't compile in Xcode 10.3
我有这样的代码:
if (@available(iOS 13.0, *)) {
if([getMetalDevice() supportsFamily:MTLGPUFamilyApple3])
pixelFormat = MTLPixelFormatBGRA10_XR;
else
pixelFormat = MTLPixelFormatBGRA8Unorm;
}
它适用于 Xcode 11,但不适用于 Xcode 10.3。
预处理器说它不知道什么是 MTLGPUFamilyApple3
(在 iOS 13 中引入)。
我尝试使用预处理器宏:
#define isIOS13 (floor(NSFoundationVersionNumber) >= NSFoundationVersionNumber_iOS_13_0)
但是预处理器抱怨 Function-like macro 'floor' is not defined
。
也一样
#define isIOS13 (int(NSFoundationVersionNumber) >= NSFoundationVersionNumber_iOS_13_0)
出于稳定性原因,我需要同时使用 Xcode 10.3 ( iOS 12.4 ) 和 Xcode 11 ( iOS 13.0 )。
我怎样做才能让我的代码在 Xcode 中工作?
#ifdef __IPHONE_13_0
if (@available(iOS 13.0, *)) {
if([getMetalDevice() supportsFamily:MTLGPUFamilyApple3])
pixelFormat = MTLPixelFormatBGRA10_XR;
else
#else
{
#endif
pixelFormat = MTLPixelFormatBGRA8Unorm;
}
但是只有当您提供了一些支持多个 Xcode 的开源库时,您才应该使用此代码。
如果这是您项目的一部分,您应该迁移到新的 Xcode 并且
不会使用预处理器运算符使您的代码过于复杂。
最好用 Appium 解决问题而不是这个。
我有这样的代码:
if (@available(iOS 13.0, *)) {
if([getMetalDevice() supportsFamily:MTLGPUFamilyApple3])
pixelFormat = MTLPixelFormatBGRA10_XR;
else
pixelFormat = MTLPixelFormatBGRA8Unorm;
}
它适用于 Xcode 11,但不适用于 Xcode 10.3。
预处理器说它不知道什么是 MTLGPUFamilyApple3
(在 iOS 13 中引入)。
我尝试使用预处理器宏:
#define isIOS13 (floor(NSFoundationVersionNumber) >= NSFoundationVersionNumber_iOS_13_0)
但是预处理器抱怨 Function-like macro 'floor' is not defined
。
#define isIOS13 (int(NSFoundationVersionNumber) >= NSFoundationVersionNumber_iOS_13_0)
出于稳定性原因,我需要同时使用 Xcode 10.3 ( iOS 12.4 ) 和 Xcode 11 ( iOS 13.0 )。
我怎样做才能让我的代码在 Xcode 中工作?
#ifdef __IPHONE_13_0
if (@available(iOS 13.0, *)) {
if([getMetalDevice() supportsFamily:MTLGPUFamilyApple3])
pixelFormat = MTLPixelFormatBGRA10_XR;
else
#else
{
#endif
pixelFormat = MTLPixelFormatBGRA8Unorm;
}
但是只有当您提供了一些支持多个 Xcode 的开源库时,您才应该使用此代码。
如果这是您项目的一部分,您应该迁移到新的 Xcode 并且 不会使用预处理器运算符使您的代码过于复杂。
最好用 Appium 解决问题而不是这个。