Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 检测头文件中的协议可用性-目标-C_Ios_Objective C_Xcode8_Ios10 - Fatal编程技术网

Ios 检测头文件中的协议可用性-目标-C

Ios 检测头文件中的协议可用性-目标-C,ios,objective-c,xcode8,ios10,Ios,Objective C,Xcode8,Ios10,我已经下载了XCode 8.2测试版,为了修复项目上的警告,我必须将以下协议添加到头文件:该文件仅可从iOS 10获得 问题是,通过仅添加协议,项目没有在10之前的iOS版本上编译,因此我添加了以下检查: #if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_9_3 @interface CheckTest : UIView <CAAnimationDelegate> #else @interface CheckTest : UIView

我已经下载了XCode 8.2
测试版
,为了修复项目上的警告,我必须将以下
协议
添加到
头文件
:该文件仅可从iOS 10获得

问题是,通过仅添加协议,项目没有在10之前的
iOS版本上编译,因此我添加了以下检查:

#if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_9_3
@interface CheckTest : UIView <CAAnimationDelegate>
#else
@interface CheckTest : UIView
#endif
#如果(IPHONE)操作系统(OS)版本(允许最高版本)>(IPHONE)9(3)
@接口检查测试:UIView
#否则
@接口检查测试:UIView
#恩迪夫

这是正确的方法吗?

我相信您对guard宏的使用是正确的,只是做了一个小改动;要检查是否编译iOS 10+,请在宏中测试:

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0
@interface CheckTest : UIView <CAAnimationDelegate>
#else
@interface CheckTest : UIView
#endif
并将保护宏更改为:

#if VIEWS_USE_CAANIMATIONDELEGATE
@interface CheckTest : UIView <CAAnimationDelegate>
#else
@interface CheckTest : UIView
#endif
\if视图\u使用\u CAANIMATIONDELEGATE
@接口检查测试:UIView
#否则
@接口检查测试:UIView
#恩迪夫

在我看来不错,但你可能想使用
==IPHONE\u 10
或类似产品,以防发布iOS 9.4(不会,但你知道)。您将不得不以类似的方式保护委托方法的实现,我假设…@Droppy是的,还没有考虑过这一点!非常感谢:)如果你想把它作为一个答案,我可以接受它,谢谢!只是一个输入错误,我刚刚在
Availability.h
上发现,iOS 10的代码是
\uuuIphone\u10\u0
作为记录:当您使用较旧的iOS版本编译时,这种方法通常会中断,因为
\uIphone\u10\u0
显然是与iOS 10一起定义的。但令人惊讶的是,该宏已经存在于
CABase.h
中。通常的情况是,您硬编码宏的值(
100000
)。@petertrvai是的,这很有意义。
#if VIEWS_USE_CAANIMATIONDELEGATE
@interface CheckTest : UIView <CAAnimationDelegate>
#else
@interface CheckTest : UIView
#endif