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

z9zf31ra  于 2023-06-07  发布在  iOS
关注(0)|答案(2)|浏览(179)

我已经下载了XCode 8.2beta,为了修复项目中的警告,我不得不将以下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

这是正确的做法吗?

9ceoxa92

9ceoxa921#

我相信你对守卫宏的使用是正确的,只有一个小改动;你想检查你是否在为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
ne5o7dgx

ne5o7dgx2#

你可以在Objective-C头文件中这样做。

@property (nonatomic, assign) BOOL allowLocalNetworkTraffic API_AVAILABLE(macos(10.15), ios(14.2)) API_UNAVAILABLE(tvos, watchos) __WATCHOS_PROHIBITED;

相关问题