【问题标题】:How to suppress warnings in Swift 3?如何抑制 Swift 3 中的警告?
【发布时间】:2017-04-22 03:47:03
【问题描述】:

使用 clang* 我可以做到

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
   // ...
#pragma clang diagnostic pop

但是这在swift中不起作用。

那么如何在 Swift 中抑制警告呢?

【问题讨论】:

  • 我要说警告的存在是有原因的;他们注意到不良做法。专注于修复警告。
  • @anonman 是的,这绝对正确。我只是想知道如何快速做到这一点。
  • 我完全同意匿名者的观点。 ⌘-单击受影响的符号以获取声明。在大多数情况下,还有关于替换已弃用 API 的建议。

标签: swift xcode swift3 xcode8 swift3.1


【解决方案1】:

编辑:以下指令用于“不推荐使用的声明”警告。如果你想抑制不同的警告,那么你应该使用与警告相关的标志。你们中的大多数人可能使用 Clang,它的警告标志可以在 here 找到。因此,如果您想抑制例如-Wunused-argument,您将使用“no”编写它:-Wnounused-argument

如果您想禁用编译器警告,请转到 Project -> Target -> Build Settings 并添加带有 no 的标志 其他警告标志的前缀:

如果您想禁用单独文件的警告: 转到 Project 并选择相关的 Target -> Build Phases -> Compile Sources 并标记单独的文件:

【讨论】:

  • 对我不起作用。仍然显示警告消息。我的 Xcode 版本是 8.3.3。
  • 我要注意的是,上面的指令是针对特定警告的,即-Wnodeprecated-declarations。如果要抑制不同的警告,则必须使用不同的标志。您要禁用哪些警告?
  • 设置构建设置标志以禁用警告不适用于 Swift 项目。我的 pod 正在生成 -Wincomplete-umbrella 错误并且拥有 -Wnoincomplete-umbrella 并不会抑制该警告。见:stackoverflow.com/questions/31540446/…
  • @JoeMaher 查看此 clang 警告列表:xs-labs.com/en/blog/2012/01/10/warning-flags-clang 也许您会找到相关的警告标志,如果有,请在此处发布:)
  • 我发现@WladekSurala 的答案仅适用于 Objective-C 文件,我还必须将标志更改为 -Wno-deprecated-declarations
【解决方案2】:

这适用于 Xcode 10.2+ 和 Swift 5

手动修复:

从 Xcode > Project > Targets > Compile Sources > 将-w -Xanalyzer -analyzer-disable-all-checks 添加到有问题的文件中 > 双击要关闭警告的文件。

Cocoapods 修复:

如果您尝试抑制来自有问题的 pod 的警告,您可以使用 podfile 中的 inhibit_warnings 标志自动抑制来自依赖项的所有警告:

pod 'Kingfisher', '~> 4.6', :inhibit_warnings => true

【讨论】:

  • 不适用于 xcode 10.2 和 swift 5。至少在使用 SiriKit 中已弃用的 INStartWorkoutIntentResponseCode.continueInApp 的 swift 文件中不行。
猜你喜欢
  • 2019-04-02
  • 2021-06-03
  • 1970-01-01
  • 2019-02-25
  • 2011-03-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多