[英]Detect protocol availability in header file - Objective-C
我已经下载了XCode 8.2 beta
,为了修复项目警告,我必须将以下protocol
添加header file
: CAAnimationDelete只能从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.