警告:不必要的检查最低部署目标

Mou*_*ian 15 suppress-warnings ios swift ios-extensions swift2

我有一个Swift类,它与几个具有不同部署目标的目标相关联,主项目具有iOS 7最低要求,并且有一个iOS 8目标扩展.

现在当我编译项目时,编译器会在这行代码上抛出警告:

    if #available(iOS 8.0, *) { ... }
Run Code Online (Sandbox Code Playgroud)

"对'iOSApplicationExtension'进行不必要的检查;最小部署目标确保后卫始终为真"

我检查了构建设置选项,发现没有切换来杀死swift警告.

我试图通过这一行单独定义iOSApplicationExtension版本目标,但没有成功:

    if #available(iOS 8.0, iOSApplicationExtension 8.0, *) { ... }
Run Code Online (Sandbox Code Playgroud)

有没有办法压制这个烦人的消息?

Mou*_*ian 2

找到了一个丑陋的解决方法来消除警告,但我希望有更好的方法:

在 iOS 8+ 目标构建设置中,我在 Build Settings -> Swift Compiler - Custom Flags -> Other Swift Flags 中定义了一个预编译标志:

-D iOS8目标

然后我将代码更改为这样:

#if iOS8target
    // iOS 8+ compatible code
#else
    if #available(iOS 8.0, *) {
        // repeat iOS 8+ compatible code again!
    } else {
        // iOS 7 code
    }
#endif
Run Code Online (Sandbox Code Playgroud)

它没有重构且丑陋,但它有效!

更新: 有一个快速编译器开关-suppress-warnings可以忽略所有警告。但它也抑制了有用的警告。此外,如果只有一个特定文件发出警告,您可以-w在“构建阶段”窗格中使用标志。它还会抑制有用的警告,但仅限于一个文件。

  • 我宁愿接受警告:S (6认同)