我有一个Swift类,它链接到具有不同部署目标的几个目标,主项目具有iOS 7的最低要求,并且有一个带有iOS 8目标的扩展。
现在,当我编译项目时,编译器在这行代码中抛出警告:
if #available(iOS 8.0, *) { ... }“对‘iOSApplicationExtension’进行不必要的检查;最小部署目标可确保防护始终为真”
我已经检查了构建设置选项,但没有发现可以杀死swift警告的开关。
我尝试通过这一行单独定义iOSApplicationExtension版本目标,但没有成功:
if #available(iOS 8.0, iOSApplicationExtension 8.0, *) { ... }有没有办法抑制这种恼人的信息呢?
发布于 2015-09-12 19:48:44
找到了一种丑陋的解决方法来使警告静默,但我希望有更好的方法:
在iOS 8+目标构建设置中,我在构建设置-> Swift编译器-自定义标志->其他Swift标志中定义了一个预编译标志:
-D iOS8target
然后我把代码改成这样:
#if iOS8target
// iOS 8+ compatible code
#else
if #available(iOS 8.0, *) {
// repeat iOS 8+ compatible code again!
} else {
// iOS 7 code
}
#endif它不是重构的和丑陋的,但它是有效的!
更新:有一个快速编译器开关-suppress-warnings,可以忽略所有警告。但它也会抑制有用的警告。另外,如果只有一个特定的文件发出警告,您可以在构建阶段窗格中使用-w标志。它还将抑制有用的警告,但仅限于一个文件。
https://stackoverflow.com/questions/32534345
复制相似问题