我有这样的代码:
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中都能工作?
答案 0 :(得分:1)
#ifdef __IPHONE_13_0
if (@available(iOS 13.0, *)) {
if([getMetalDevice() supportsFamily:MTLGPUFamilyApple3])
pixelFormat = MTLPixelFormatBGRA10_XR;
else
#else
{
#endif
pixelFormat = MTLPixelFormatBGRA8Unorm;
}
但是,只有在提供一些支持多个Xcode的开源库时,才应使用此代码。
如果这是您项目的一部分,则应仅迁移到新的Xcode,然后 不会使您的代码与预处理器运算符过度复杂。
更好地解决Appium问题,而不是这个。