@available api 检查在 Xcode 8 中不起作用 [英] @available api check not works in Xcode 8

查看:103
本文介绍了@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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆