检测头文件中的协议可用性 - Objective-C
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
我已经下载了 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