@available api 检查在 Xcode 8 中不起作用 [英] @available api check not works in Xcode 8
本文介绍了@available api 检查在 Xcode 8 中不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在 Xcode 8.0 中编写 objective-c 代码,为了 API 可用性,我正在使用
I am writing objective-c code in Xcode 8.0, for API availability I am using
if (@available(iOS 11, *)) {
// iOS 11 (or newer) ObjC code
} else {
// iOS 10 or older code
}
不幸的是编译器触发:
无法识别的平台名称 iOS
unrecognised platform name iOS
为什么?
推荐答案
正如我在 如何查看 iOS 版本?:
@available
已在 Xcode 9 中添加#available
已在 Xcode 7 中添加
@available
was added in Xcode 9#available
was added in Xcode 7
如果您需要测试多个 Xcode 版本的可用性,您可以使用 #ifdef __MAC_10_13
检测 Xcode 9,或者更好的是 #if __clang_major__ >= 9
,如下:
If you need to test availability for multiple versions of Xcode, you can detect Xcode 9 with #ifdef __MAC_10_13
or, better, #if __clang_major__ >= 9
, as below:
#if __clang_major__ >= 9
// Xcode 9+
if (@available(macOS 10.10, iOS 8.0, watchOS 2.0, tvOS 9.0, *)) {
// iOS 8+
}
#else
// Xcode 8-
if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber10_9_2) {
// iOS 8+
}
#endif
else {
// iOS 7-
}
真实案例取自:https://github.com/ZipArchive/ZipArchive/blob/master/SSZipArchive/SSZipArchive.m
这篇关于@available api 检查在 Xcode 8 中不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文