如何在Swift 3中抑制警告?

5

使用clang*,我可以做到

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

然而在Swift中这并不起作用。那么,在Swift中如何抑制警告呢?

4
警告存在是有原因的;它们关注不良行为。专注于修复警告。 - anonman
@anonman 是的,完全正确。我只是想知道如何在 Swift 中实现这个。 - Meniny
1
我完全同意anonman的观点。在受影响的符号上按⌘-单击以获取声明。在大多数情况下,还会提供有关替换弃用API的建议。 - vadian
2个回答

9
编辑:以下指令适用于“废弃声明”警告。如果您想抑制不同的警告,则应使用与该警告相关的标志。大多数人可能使用Clang,并且可以在这里找到其警告标志。因此,如果您要抑制例如-Wunused-argument,则需要在其前面加上"no": -Wnounused-argument
如果您想禁用编译器警告,请转到项目 -> 目标 -> 构建设置并将带有 no 前缀的标志添加到其他警告标志中: for all files 如果您想为单独的文件禁用警告: 进入项目,选择相关的目标 -> 构建阶段 -> 编译源并标记单独的文件: for one file

我想指出上述指令是针对特定警告的,即-Wnodeprecated-declarations。如果您想要禁止不同的警告,则必须使用不同的标志。您想要禁用哪些警告? - Wladek Surala
1
将构建设置标志设置为禁用警告对Swift项目无效。我有一些Pod生成了“-Wincomplete-umbrella”错误,并且使用“-Wnoincomplete-umbrella”无法抑制这些警告。请参见:https://dev59.com/OlwZ5IYBdhLWcg3wWvVY - micnguyen
@WladekSurala 我有4个目标。是的,我使用CocoaPods。 - Bagusflyer
1
@JoeMaher 请查看这个clang警告列表:http://www.xs-labs.com/en/blog/2012/01/10/warning-flags-clang/ 如果你找到了与你的警告相关的标志,请在此处发布:) - Wladek Surala
1
我发现@WladekSurala的答案只适用于Objective-C文件,而且我还必须将标志更改为-Wno-deprecated-declarations。 - Jared
显示剩余4条评论

-1

适用于Xcode 10.2+和Swift 5

手动修复:

从Xcode > 项目 > 目标 > 编译源代码 > 双击要关闭警告的文件,添加-w -Xanalyzer -analyzer-disable-all-checks

Cocoapods修复:

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

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

在使用SiriKit的Swift文件中,使用已弃用的“INStartWorkoutIntentResponseCode.continueInApp”无法在Xcode 10.2和Swift 5中正常工作。 - Simon Bengtsson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接