繁体   English   中英

检测头文件中的协议可用性 - Objective-C

[英]Detect protocol availability in header file - Objective-C

我已经下载了XCode 8.2 beta ,为了修复项目警告,我必须将以下protocol添加header fileCAAnimationDelete只能从iOS 10获得。

问题是,只添加协议项目没有在10之前的iOS versions上编译,所以我添加了以下检查:

#if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_9_3
@interface CheckTest : UIView <CAAnimationDelegate>
#else
@interface CheckTest : UIView
#endif

这是正确的方法吗?

我相信你对守卫宏的使用是正确的,只有一个小小的改变; 你想检查你是否正在为iOS 10+编译,所以在宏中测试它:

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0
@interface CheckTest : UIView <CAAnimationDelegate>
#else
@interface CheckTest : UIView
#endif

不要忘记使用相同的保护宏来保护CAAnimationDelegate方法实现。

如果您在许多类中执行此操作,那么在预编译的头中执行此操作可能更方便:

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10
#define VIEWS_USE_CAANIMATIONDELEGATE 1
#else
#define VIEWS_USE_CAANIMATIONDELEGATE 0
#endif

并将保护宏更改为:

#if VIEWS_USE_CAANIMATIONDELEGATE
@interface CheckTest : UIView <CAAnimationDelegate>
#else
@interface CheckTest : UIView
#endif

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM